hesv_rk#
Functions
-
void chesv_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)#
CHESV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N Hermitian 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**H)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**H)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**H (or L**H) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
CHETRF_RK is called to compute the factorization of a complex Hermitian matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine CHETRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the Hermitian 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 Hermitian matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by CHETRF_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 Hermitian 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 chesv_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 zhesv_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)#
ZHESV_RK computes the solution to a complex system of linear equations A * X = B, where A is an N-by-N Hermitian 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**H)*(P**T), if UPLO = ‘U’, or A = P*L*D*(L**H)*(P**T), if UPLO = ‘L’, where U (or L) is unit upper (or lower) triangular matrix, U**H (or L**H) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
ZHETRF_RK is called to compute the factorization of a complex Hermitian matrix. The factored form of A is then used to solve the system of equations A * X = B by calling BLAS3 routine ZHETRS_3.
Parameters
inuploSpecifies whether the upper or lower triangular part of the Hermitian 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 Hermitian matrix A. On exit, if info = 0, diagonal of the block diagonal matrix D and factors U or L as computed by ZHETRF_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 Hermitian 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 zhesv_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
);