sysv_rk#
Functions
-
void ssysv_rk(const char *uplo, const INT n, const INT nrhs, f32 *restrict A, const INT lda, f32 *restrict E, INT *restrict ipiv, f32 *restrict B, const INT ldb, f32 *restrict work, const INT lwork, INT *info)#
SSYSV_RK computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as A = P*U*D*(U**T)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**T)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
SSYTRF_RK is called to compute the factorization of a real symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine SSYTRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored: = ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations, i.e., the order of the matrix A. n >= 0.
innrhsThe number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
inoutADouble precision array, dimension (lda, n). On entry, the symmetric matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by SSYTRF_RK.
inldaThe leading dimension of the array A. lda >= max(1, n).
outEDouble precision array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.
outipivInteger array, dimension (n). Details of the interchanges and the block structure of D.
inoutBDouble precision array, dimension (ldb, nrhs). On entry, the N-by-NRHS right hand side matrix B. On exit, if info = 0, the N-by-NRHS solution matrix X.
inldbThe leading dimension of the array B. ldb >= max(1, n).
outworkDouble precision array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.
outinfo= 0: successful exit
< 0: if info = -k, the k-th argument had an illegal value
> 0: if info = k, the matrix A is singular.
void ssysv_rk(
const char* uplo,
const INT n,
const INT nrhs,
f32* restrict A,
const INT lda,
f32* restrict E,
INT* restrict ipiv,
f32* restrict B,
const INT ldb,
f32* restrict work,
const INT lwork,
INT* info
);
Functions
-
void dsysv_rk(const char *uplo, const INT n, const INT nrhs, f64 *restrict A, const INT lda, f64 *restrict E, INT *restrict ipiv, f64 *restrict B, const INT ldb, f64 *restrict work, const INT lwork, INT *info)#
DSYSV_RK computes the solution to a real system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as A = P*U*D*(U**T)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**T)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
DSYTRF_RK is called to compute the factorization of a real symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine DSYTRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored: = ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations, i.e., the order of the matrix A. n >= 0.
innrhsThe number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
inoutADouble precision array, dimension (lda, n). On entry, the symmetric matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by DSYTRF_RK.
inldaThe leading dimension of the array A. lda >= max(1, n).
outEDouble precision array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.
outipivInteger array, dimension (n). Details of the interchanges and the block structure of D.
inoutBDouble precision array, dimension (ldb, nrhs). On entry, the N-by-NRHS right hand side matrix B. On exit, if info = 0, the N-by-NRHS solution matrix X.
inldbThe leading dimension of the array B. ldb >= max(1, n).
outworkDouble precision array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.
outinfo= 0: successful exit
< 0: if info = -k, the k-th argument had an illegal value
> 0: if info = k, the matrix A is singular.
void dsysv_rk(
const char* uplo,
const INT n,
const INT nrhs,
f64* restrict A,
const INT lda,
f64* restrict E,
INT* restrict ipiv,
f64* restrict B,
const INT ldb,
f64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void csysv_rk(const char *uplo, const INT n, const INT nrhs, c64 *restrict A, const INT lda, c64 *restrict E, INT *restrict ipiv, c64 *restrict B, const INT ldb, c64 *restrict work, const INT lwork, INT *info)#
CSYSV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as A = P*U*D*(U**T)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**T)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
CSYTRF_RK is called to compute the factorization of a complex symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine CSYTRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored: = ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations, i.e., the order of the matrix A. n >= 0.
innrhsThe number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
inoutASingle complex array, dimension (lda, n). On entry, the symmetric matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by CSYTRF_RK.
inldaThe leading dimension of the array A. lda >= max(1, n).
outESingle complex array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.
outipivInteger array, dimension (n). Details of the interchanges and the block structure of D.
inoutBSingle complex array, dimension (ldb, nrhs). On entry, the N-by-NRHS right hand side matrix B. On exit, if info = 0, the N-by-NRHS solution matrix X.
inldbThe leading dimension of the array B. ldb >= max(1, n).
outworkSingle complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.
outinfo= 0: successful exit
< 0: if info = -k, the k-th argument had an illegal value
> 0: if info = k, the matrix A is singular.
void csysv_rk(
const char* uplo,
const INT n,
const INT nrhs,
c64* restrict A,
const INT lda,
c64* restrict E,
INT* restrict ipiv,
c64* restrict B,
const INT ldb,
c64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void zsysv_rk(const char *uplo, const INT n, const INT nrhs, c128 *restrict A, const INT lda, c128 *restrict E, INT *restrict ipiv, c128 *restrict B, const INT ldb, c128 *restrict work, const INT lwork, INT *info)#
ZSYSV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N symmetric matrix and X and B are N-by-NRHS matrices.
The bounded Bunch-Kaufman (rook) diagonal pivoting method is used to factor A as A = P*U*D*(U**T)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**T)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**T (or L**T) is the transpose of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
ZSYTRF_RK is called to compute the factorization of a complex symmetric matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine ZSYTRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the symmetric matrix A is stored: = ‘U’: Upper triangle of A is stored; = ‘L’: Lower triangle of A is stored.
innThe number of linear equations, i.e., the order of the matrix A. n >= 0.
innrhsThe number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.
inoutADouble complex array, dimension (lda, n). On entry, the symmetric matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by ZSYTRF_RK.
inldaThe leading dimension of the array A. lda >= max(1, n).
outEDouble complex array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.
outipivInteger array, dimension (n). Details of the interchanges and the block structure of D.
inoutBDouble complex array, dimension (ldb, nrhs). On entry, the N-by-NRHS right hand side matrix B. On exit, if info = 0, the N-by-NRHS solution matrix X.
inldbThe leading dimension of the array B. ldb >= max(1, n).
outworkDouble complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.
inlworkThe length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.
outinfo= 0: successful exit
< 0: if info = -k, the k-th argument had an illegal value
> 0: if info = k, the matrix A is singular.
void zsysv_rk(
const char* uplo,
const INT n,
const INT nrhs,
c128* restrict A,
const INT lda,
c128* restrict E,
INT* restrict ipiv,
c128* restrict B,
const INT ldb,
c128* restrict work,
const INT lwork,
INT* info
);