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
);
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

in
uplo

Specifies 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.

in
n

The number of linear equations, i.e., the order of the matrix A. n >= 0.

in
nrhs

The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.

inout
A

Double 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.

in
lda

The leading dimension of the array A. lda >= max(1, n).

out
E

Double precision array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.

out
ipiv

Integer array, dimension (n). Details of the interchanges and the block structure of D.

inout
B

Double 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.

in
ldb

The leading dimension of the array B. ldb >= max(1, n).

out
work

Double precision array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -k, the k-th argument had an illegal value

  • > 0: if info = k, the matrix A is singular.

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
);
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

in
uplo

Specifies 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.

in
n

The number of linear equations, i.e., the order of the matrix A. n >= 0.

in
nrhs

The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.

inout
A

Double 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.

in
lda

The leading dimension of the array A. lda >= max(1, n).

out
E

Double precision array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.

out
ipiv

Integer array, dimension (n). Details of the interchanges and the block structure of D.

inout
B

Double 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.

in
ldb

The leading dimension of the array B. ldb >= max(1, n).

out
work

Double precision array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -k, the k-th argument had an illegal value

  • > 0: if info = k, the matrix A is singular.

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
);
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

in
uplo

Specifies 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.

in
n

The number of linear equations, i.e., the order of the matrix A. n >= 0.

in
nrhs

The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.

inout
A

Single 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.

in
lda

The leading dimension of the array A. lda >= max(1, n).

out
E

Single complex array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.

out
ipiv

Integer array, dimension (n). Details of the interchanges and the block structure of D.

inout
B

Single 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.

in
ldb

The leading dimension of the array B. ldb >= max(1, n).

out
work

Single complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -k, the k-th argument had an illegal value

  • > 0: if info = k, the matrix A is singular.

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
);
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

in
uplo

Specifies 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.

in
n

The number of linear equations, i.e., the order of the matrix A. n >= 0.

in
nrhs

The number of right hand sides, i.e., the number of columns of the matrix B. nrhs >= 0.

inout
A

Double 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.

in
lda

The leading dimension of the array A. lda >= max(1, n).

out
E

Double complex array, dimension (n). On exit, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D.

out
ipiv

Integer array, dimension (n). Details of the interchanges and the block structure of D.

inout
B

Double 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.

in
ldb

The leading dimension of the array B. ldb >= max(1, n).

out
work

Double complex array, dimension (max(1, lwork)). On exit, if info = 0, work[0] returns the optimal lwork.

in
lwork

The length of work. lwork >= 1. If lwork = -1, then a workspace query is assumed.

out
info

  • = 0: successful exit

  • < 0: if info = -k, the k-th argument had an illegal value

  • > 0: if info = k, the matrix A is singular.