Intel® oneAPI Math Kernel Library Developer Reference - Fortran
Computes the QR decomposition for the matrix of a sparse linear system and calculates the solution.
stat = mkl_sparse_d_qr (operation, A, descr, layout, *columns, x, *ldx, b, ldb)
stat = mkl_sparse_s_qr (operation, A, descr, layout, x, columns, ldx, b, ldb)
The mkl_sparse_?_qr routine computes the QR decomposition for the matrix of a sparse linear system A*x = b, so that A = Q*R where Q is the orthogonal matrix and R is upper triangular, and calculates the solution.
Currently, mkl_sparse_?_qr supports only square and overdetermined systems. For underdetermined systems you can manually transpose the system matrix and use QR decomposition for AT to get the minimum-norm solution for the original underdetermined system.
C_INT
Specifies the operation to perform.
SPARSE_MATRIX_T
Handle containing a sparse matrix in an internal data structure.
MATRIX_DESCR
Structure specifying sparse matrix properties. Only the parameters listed here are currently supported.
Specifies the type of sparse matrix.
C_INT
Describes the storage scheme for the dense matrix:
SPARSE_LAYOUT_COLUMN_MAJOR | Storage of elements uses column-major layout. |
SPARSE_LAYOUT_ROW_MAJOR | Storage of elements uses row-major layout. |
C_FLOAT for mkl_sparse_s_qr; C_DOUBLE for mkl_sparse_d_qr
Array with a size of at least rows*cols:
layout = SPARSE_LAYOUT_COLUMN_MAJOR | layout = SPARSE_LAYOUT_ROW_MAJOR | |
rows (number of rows in x) | ldx | Number of columns in A |
cols (number of columns in x) | columns | ldx |
C_INT
Number of columns in matrix b.
C_INT
Specifies the leading dimension of matrix x.
C_FLOAT for mkl_sparse_s_qr; C_DOUBLE for mkl_sparse_d_qr
Array with a size of at least rows*cols:
layout = SPARSE_LAYOUT_COLUMN_MAJOR | layout = SPARSE_LAYOUT_ROW_MAJOR | |
rows (number of rows in b) | ldb | Number of columns in A |
cols (number of columns in b) | columns | ldb |
C_INT
Specifies the leading dimension of matrix b.
C_FLOAT for mkl_sparse_s_qr; C_DOUBLE for mkl_sparse_d_qr
Overwritten by the updated matrix y.
INTEGER
Value indicating whether the operation was successful, and if not, why:
SPARSE_STATUS_SUCCESS | The operation was successful. |
SPARSE_STATUS_NOT_INITIALIZED | The routine encountered an empty handle or matrix array. |
SPARSE_STATUS_ALLOC_FAILED | Internal memory allocation failed. |
SPARSE_STATUS_INVALID_VALUE | The input parameters contain an invalid value. |
SPARSE_STATUS_EXECUTION_FAILED | Execution failed. |
SPARSE_STATUS_INTERNAL_ERROR | An error in algorithm implementation occurred. |
SPARSE_STATUS_NOT_SUPPORTED | The requested operation is not supported. |