diff --git a/src/NativeProviders/MKL/dss.c b/src/NativeProviders/MKL/dss.c
index f73a58a6..21838774 100644
--- a/src/NativeProviders/MKL/dss.c
+++ b/src/NativeProviders/MKL/dss.c
@@ -14,20 +14,15 @@ extern "C" {
_MKL_DSS_HANDLE_t handle;
dss_int error;
- dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER + MKL_DSS_SINGLE_PRECISION;
- if (systemType) opt += MKL_DSS_TRANSPOSE_SOLVE; // solve a transposed system, A'x = b
+ dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER;
+ opt += systemType;
// Initialize the solver
error = dss_create(handle, opt);
if (error != MKL_DSS_SUCCESS) return error;
// Define the non-zero structure of the matrix
- dss_int sym = (matrixStructure == 0)
- ? MKL_DSS_SYMMETRIC_STRUCTURE
- : (matrixStructure == 1)
- ? MKL_DSS_SYMMETRIC
- : MKL_DSS_NON_SYMMETRIC;
- error = dss_define_structure(handle, sym, rowIdx, nRows, nCols, colPtr, nnz);
+ error = dss_define_structure(handle, matrixStructure, rowIdx, nRows, nCols, colPtr, nnz);
if (error != MKL_DSS_SUCCESS) return error;
// Reorder the matrix
@@ -35,10 +30,7 @@ extern "C" {
if (error != MKL_DSS_SUCCESS) return error;
// Factor the matrix
- dss_int type = (matrixType == 0)
- ? MKL_DSS_POSITIVE_DEFINITE
- : MKL_DSS_INDEFINITE;
- error = dss_factor_real(handle, type, values);
+ error = dss_factor_real(handle, matrixType, values);
if (error != MKL_DSS_SUCCESS) return error;
// Get the solution vector
@@ -58,19 +50,14 @@ extern "C" {
dss_int error;
dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER;
- if (systemType) opt += MKL_DSS_TRANSPOSE_SOLVE; // solve a transposed system, A'x = b
+ opt += systemType;
// Initialize the solver
error = dss_create(handle, opt);
if (error != MKL_DSS_SUCCESS) return error;
// Define the non-zero structure of the matrix
- dss_int sym = (matrixStructure == 0)
- ? MKL_DSS_SYMMETRIC_STRUCTURE
- : (matrixStructure == 1)
- ? MKL_DSS_SYMMETRIC
- : MKL_DSS_NON_SYMMETRIC;
- error = dss_define_structure(handle, sym, rowIdx, nRows, nCols, colPtr, nnz);
+ error = dss_define_structure(handle, matrixStructure, rowIdx, nRows, nCols, colPtr, nnz);
if (error != MKL_DSS_SUCCESS) return error;
// Reorder the matrix
@@ -78,10 +65,7 @@ extern "C" {
if (error != MKL_DSS_SUCCESS) return error;
// Factor the matrix
- dss_int type = (matrixType == 0)
- ? MKL_DSS_POSITIVE_DEFINITE
- : MKL_DSS_INDEFINITE;
- error = dss_factor_real(handle, type, values);
+ error = dss_factor_real(handle, matrixType, values);
if (error != MKL_DSS_SUCCESS) return error;
// Get the solution vector
@@ -100,21 +84,15 @@ extern "C" {
_MKL_DSS_HANDLE_t handle;
dss_int error;
- dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER + MKL_DSS_SINGLE_PRECISION;
- if (systemType == 1) opt += MKL_DSS_CONJUGATE_SOLVE; // solve a conjugate transposed system, A¢Óx = b
- else if(systemType == 2) opt += MKL_DSS_TRANSPOSE_SOLVE; // solve a transposed system, A'x = b
+ dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER;
+ opt += systemType;
// Initialize the solver
error = dss_create(handle, opt);
if (error != MKL_DSS_SUCCESS) return error;
// Define the non-zero structure of the matrix
- dss_int sym = (matrixStructure == 0)
- ? MKL_DSS_SYMMETRIC_STRUCTURE_COMPLEX
- : (matrixStructure == 1)
- ? MKL_DSS_SYMMETRIC_COMPLEX
- : MKL_DSS_NON_SYMMETRIC_COMPLEX;
- error = dss_define_structure(handle, sym, rowIdx, nRows, nCols, colPtr, nnz);
+ error = dss_define_structure(handle, matrixStructure, rowIdx, nRows, nCols, colPtr, nnz);
if (error != MKL_DSS_SUCCESS) return error;
// Reorder the matrix
@@ -122,14 +100,7 @@ extern "C" {
if (error != MKL_DSS_SUCCESS) return error;
// Factor the matrix
- dss_int type = (matrixType == 0)
- ? MKL_DSS_POSITIVE_DEFINITE
- : (matrixType == 1)
- ? MKL_DSS_INDEFINITE
- : (matrixType == 2)
- ? MKL_DSS_HERMITIAN_POSITIVE_DEFINITE
- : MKL_DSS_HERMITIAN_INDEFINITE;
- error = dss_factor_complex(handle, type, values);
+ error = dss_factor_complex(handle, matrixType, values);
if (error != MKL_DSS_SUCCESS) return error;
// Get the solution vector
@@ -149,20 +120,14 @@ extern "C" {
dss_int error;
dss_int opt = MKL_DSS_MSG_LVL_WARNING + MKL_DSS_TERM_LVL_ERROR + MKL_DSS_ZERO_BASED_INDEXING + MKL_DSS_AUTO_ORDER;
- if (systemType == 1) opt += MKL_DSS_CONJUGATE_SOLVE; // solve a conjugate transposed system, A¢Óx = b
- else if (systemType == 2) opt += MKL_DSS_TRANSPOSE_SOLVE; // solve a transposed system, A'x = b
+ opt += systemType;
// Initialize the solver
error = dss_create(handle, opt);
if (error != MKL_DSS_SUCCESS) return error;
// Define the non-zero structure of the matrix
- dss_int sym = (matrixStructure == 0)
- ? MKL_DSS_SYMMETRIC_STRUCTURE_COMPLEX
- : (matrixStructure == 1)
- ? MKL_DSS_SYMMETRIC_COMPLEX
- : MKL_DSS_NON_SYMMETRIC_COMPLEX;
- error = dss_define_structure(handle, sym, rowIdx, nRows, nCols, colPtr, nnz);
+ error = dss_define_structure(handle, matrixStructure, rowIdx, nRows, nCols, colPtr, nnz);
if (error != MKL_DSS_SUCCESS) return error;
// Reorder the matrix
@@ -170,14 +135,7 @@ extern "C" {
if (error != MKL_DSS_SUCCESS) return error;
// Factor the matrix
- dss_int type = (matrixType == 0)
- ? MKL_DSS_POSITIVE_DEFINITE
- : (matrixType == 1)
- ? MKL_DSS_INDEFINITE
- : (matrixType == 2)
- ? MKL_DSS_HERMITIAN_POSITIVE_DEFINITE
- : MKL_DSS_HERMITIAN_INDEFINITE;
- error = dss_factor_complex(handle, type, values);
+ error = dss_factor_complex(handle, matrixType, values);
if (error != MKL_DSS_SUCCESS) return error;
// Get the solution vector
diff --git a/src/Numerics.Tests/Providers/SparseSolver/double/SparseSolverProviderTests.cs b/src/Numerics.Tests/Providers/SparseSolver/double/SparseSolverProviderTests.cs
index 66c54038..0bc86a34 100644
--- a/src/Numerics.Tests/Providers/SparseSolver/double/SparseSolverProviderTests.cs
+++ b/src/Numerics.Tests/Providers/SparseSolver/double/SparseSolverProviderTests.cs
@@ -15,7 +15,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
///
/// Base class for sparse solver provider tests.
///
- [TestFixture, Category("LAProvider")]
+ [TestFixture, Category("SparseSolverProvider")]
public class SparseSolverProviderTests
{
readonly double[] _b4 = { 1.0, 2.0, 3.0, 4.0};
@@ -51,7 +51,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
var xactual = new double[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.PositiveDefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.PositiveDefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, _b5, xactual);
@@ -83,7 +83,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
var xactual = new double[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, _b5, xactual);
@@ -115,7 +115,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
var xactual = new double[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, _b4, xactual);
@@ -150,7 +150,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
var b = Identity.ToColumnMajorArray();
var Xactual = new double[rowCount * columnCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.PositiveDefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.PositiveDefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
Identity.ColumnCount, b, Xactual);
@@ -520,7 +520,7 @@ namespace MathNet.Numerics.UnitTests.Providers.SparseSolver.Double
var rhs = Rhs.ToArray();
var solution = new double[rowCount];
- SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ SparseSolverControl.Provider.Solve(DssMatrixStructure.Symmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, rhs, solution);
diff --git a/src/Numerics/Providers/Experimental.cs b/src/Numerics/Providers/Experimental.cs
index 4c332bc6..7d4231c9 100644
--- a/src/Numerics/Providers/Experimental.cs
+++ b/src/Numerics/Providers/Experimental.cs
@@ -84,7 +84,7 @@ namespace MathNet.Numerics
var rhs = input.ToArray();
var solution = new float[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, rhs, solution);
@@ -132,7 +132,7 @@ namespace MathNet.Numerics
var rhs = input.ToArray();
var solution = new double[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, rhs, solution);
@@ -180,7 +180,7 @@ namespace MathNet.Numerics
var rhs = input.ToArray();
var solution = new Complex32[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, rhs, solution);
@@ -228,7 +228,7 @@ namespace MathNet.Numerics
var rhs = input.ToArray();
var solution = new Complex[rowCount];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
1, rhs, solution);
@@ -279,7 +279,7 @@ namespace MathNet.Numerics
var solution = new float[rowCount * nRhs];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
nRhs, rhs, solution);
@@ -328,7 +328,7 @@ namespace MathNet.Numerics
var solution = new double[rowCount * nRhs];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
nRhs, rhs, solution);
@@ -377,7 +377,7 @@ namespace MathNet.Numerics
var solution = new Complex32[rowCount * nRhs];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
nRhs, rhs, solution);
@@ -426,7 +426,7 @@ namespace MathNet.Numerics
var solution = new Complex[rowCount * nRhs];
- var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.NonTransposed,
+ var error = SparseSolverControl.Provider.Solve(DssMatrixStructure.Nonsymmetric, DssMatrixType.Indefinite, DssSystemType.DontTranspose,
rowCount, columnCount, valueCount, rowPointers, columnIndices, values,
nRhs, rhs, solution);
diff --git a/src/Numerics/Providers/SparseSolver/ISparseSolverProvider.cs b/src/Numerics/Providers/SparseSolver/ISparseSolverProvider.cs
index 1be09d98..5e7ccc94 100644
--- a/src/Numerics/Providers/SparseSolver/ISparseSolverProvider.cs
+++ b/src/Numerics/Providers/SparseSolver/ISparseSolverProvider.cs
@@ -2,37 +2,52 @@
namespace MathNet.Numerics.Providers.SparseSolver
{
+ ///
+ /// Structure option.
+ ///
public enum DssMatrixStructure : int
{
- SymmetricStructure = 0,
- Symmetric = 1,
- Nonsymmetric = 2
+ Symmetric = 536870976,
+ SymmetricStructure = 536871040,
+ Nonsymmetric = 536871104,
+ SymmetricComplex = 536871168,
+ SymmetricStructureComplex = 536871232,
+ NonsymmetricComplex = 536871296,
}
+ ///
+ /// Factorization option.
+ ///
public enum DssMatrixType : int
{
- PositiveDefinite = 0,
- Indefinite = 1,
- HermitianPositiveDefinite = 2,
- HermitianIndefinite = 3
+ PositiveDefinite = 134217792,
+ Indefinite = 134217856,
+ HermitianPositiveDefinite = 134217920,
+ HermitianIndefinite = 134217984
}
+ ///
+ /// Solver step's substitution.
+ ///
public enum DssSystemType : int
{
///
/// Solve a system, Ax = b.
///
- NonTransposed = 0,
+ DontTranspose = 0,
///
- /// Solve a conjugate transposed system, A†x = b
+ /// Solve a transposed system, A'x = b
///
- ConjugateTransposed = 1,
+ Transpose = 262144,
///
- /// Solve a transposed system, A'x = b
+ /// Solve a conjugate transposed system, A†x = b
///
- Transposed = 2
+ ConjugateTranspose = 524288,
}
+ ///
+ /// Status values
+ ///
public enum DssStatus : int
{
///
diff --git a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex.cs b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex.cs
index 35356f30..d64554a0 100644
--- a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex.cs
+++ b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex.cs
@@ -13,6 +13,22 @@ namespace MathNet.Numerics.Providers.SparseSolver.Mkl
///
internal partial class MklSparseSolverProvider
{
+ ///
+ /// Solves sparse linear systems of equations, AX = B.
+ ///
+ /// The symmetricity of the matrix. For a symmetric matrix, only upper ot lower triangular matrix is used.
+ /// The definiteness of the matrix.
+ /// The type of the systems.
+ /// The number of rows of matrix.
+ /// The number of columns of matrix.
+ /// The number of non zero elements of matrix.
+ /// The array containing the row indices of the existing rows.
+ /// The array containing the column indices of the non-zero values
+ /// The array that contains the non-zero elements of matrix. No diagonal element can be ommitted.
+ /// The number of columns of the right hand side matrix.
+ /// The right hand side matrix
+ /// The left hand side matrix
+ /// The status of the solver.
[SecuritySafeCritical]
public override DssStatus Solve(DssMatrixStructure matrixStructure, DssMatrixType matrixType, DssSystemType systemType,
int rowCount, int columnCount, int nonZerosCount, int[] rowPointers, int[] columnIndices, Complex[] values,
diff --git a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex32.cs b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex32.cs
index 05382bf7..4c7af106 100644
--- a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex32.cs
+++ b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Complex32.cs
@@ -12,6 +12,22 @@ namespace MathNet.Numerics.Providers.SparseSolver.Mkl
///
internal partial class MklSparseSolverProvider
{
+ ///
+ /// Solves sparse linear systems of equations, AX = B.
+ ///
+ /// The symmetricity of the matrix. For a symmetric matrix, only upper ot lower triangular matrix is used.
+ /// The definiteness of the matrix.
+ /// The type of the systems.
+ /// The number of rows of matrix.
+ /// The number of columns of matrix.
+ /// The number of non zero elements of matrix.
+ /// The array containing the row indices of the existing rows.
+ /// The array containing the column indices of the non-zero values
+ /// The array that contains the non-zero elements of matrix. No diagonal element can be ommitted.
+ /// The number of columns of the right hand side matrix.
+ /// The right hand side matrix
+ /// The left hand side matrix
+ /// The status of the solver.
[SecuritySafeCritical]
public override DssStatus Solve(DssMatrixStructure matrixStructure, DssMatrixType matrixType, DssSystemType systemType,
int rowCount, int columnCount, int nonZerosCount, int[] rowPointers, int[] columnIndices, Complex32[] values,
diff --git a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Double.cs b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Double.cs
index 83f40873..f1563f4e 100644
--- a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Double.cs
+++ b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Double.cs
@@ -12,6 +12,22 @@ namespace MathNet.Numerics.Providers.SparseSolver.Mkl
///
internal partial class MklSparseSolverProvider
{
+ ///
+ /// Solves sparse linear systems of equations, AX = B.
+ ///
+ /// The symmetricity of the matrix. For a symmetric matrix, only upper ot lower triangular matrix is used.
+ /// The definiteness of the matrix.
+ /// The type of the systems.
+ /// The number of rows of matrix.
+ /// The number of columns of matrix.
+ /// The number of non zero elements of matrix.
+ /// The array containing the row indices of the existing rows.
+ /// The array containing the column indices of the non-zero values
+ /// The array that contains the non-zero elements of matrix. No diagonal element can be ommitted.
+ /// The number of columns of the right hand side matrix.
+ /// The right hand side matrix
+ /// The left hand side matrix
+ /// The status of the solver.
[SecuritySafeCritical]
public override DssStatus Solve(DssMatrixStructure matrixStructure, DssMatrixType matrixType, DssSystemType systemType,
int rowCount, int columnCount, int nonZerosCount, int[] rowPointers, int[] columnIndices, double[] values,
diff --git a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Single.cs b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Single.cs
index dff0f5d8..475e0da7 100644
--- a/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Single.cs
+++ b/src/Numerics/Providers/SparseSolver/Mkl/MklSparseSolverProvider.Single.cs
@@ -12,6 +12,22 @@ namespace MathNet.Numerics.Providers.SparseSolver.Mkl
///
internal partial class MklSparseSolverProvider
{
+ ///
+ /// Solves sparse linear systems of equations, AX = B.
+ ///
+ /// The symmetricity of the matrix. For a symmetric matrix, only upper ot lower triangular matrix is used.
+ /// The definiteness of the matrix.
+ /// The type of the systems.
+ /// The number of rows of matrix.
+ /// The number of columns of matrix.
+ /// The number of non zero elements of matrix.
+ /// The array containing the row indices of the existing rows.
+ /// The array containing the column indices of the non-zero values
+ /// The array that contains the non-zero elements of matrix. No diagonal element can be ommitted.
+ /// The number of columns of the right hand side matrix.
+ /// The right hand side matrix
+ /// The left hand side matrix
+ /// The status of the solver.
[SecuritySafeCritical]
public override DssStatus Solve(DssMatrixStructure matrixStructure, DssMatrixType matrixType, DssSystemType systemType,
int rowCount, int columnCount, int nonZerosCount, int[] rowPointers, int[] columnIndices, float[] values,