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_rkis 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 routinessytrs_3.Only diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k)=A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), andIf
uplo='U': factor U in the superdiagonal part of A. Ifuplo='L': factor L in the subdiagonal part of A.
For more info see the description of
ssytrf_rk.
For a 1-by-1 diagonal block
D(k), the elementE[k]is set to 0 in bothuplo='U'oruplo='L'cases.For more info see the description of
ssytrf_rk.
For more info see the description of
ssytrf_rk.Parameters
inuplo'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.inoutAArray of dimension
(lda,n). On entry, the symmetric matrix A. Ifuplo='U', the leadingn-by-nupper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. Ifuplo='L', the leadingn-by-nlower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, ifinfo=0, diagonal of the block diagonal matrix D and factors U or L as computed byssytrf_rk:inldaThe leading dimension of the array A.
lda>=max(1,n).outEArray of dimension
n. On exit, contains the output computed by the factorization routinessytrf_rk, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where ifuplo='U':E[i]=D(i-1,i),i=1:n-1,E[0]is set to 0; ifuplo='L':E[i]=D(i+1,i),i=0:n-2,E[n-1]is set to 0.outipivArray of dimension
n. Details of the interchanges and the block structure of D, as determined byssytrf_rk.inoutBArray of dimension
(ldb,nrhs). On entry, then-by-nrhsright hand side matrix B. On exit, ifinfo=0, then-by-nrhssolution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkArray of dimension
max(1,lwork). Work array used in the factorization stage. On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1. For best performance of the factorization stagelwork>=n*nb, wherenbis the optimal block size forssytrf_rk. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray for the factorization stage, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-k, the k-th argument had an illegal valueinfo>0: ifinfo=k, the matrix A is singular, because column k in the upper (uplo='U') or lower (uplo='L') triangular part of A contains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of column k of U (or subdiagonal elements of column k of L) are all zeros. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
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_rkis 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 routinedsytrs_3.Only diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k)=A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), andIf
uplo='U': factor U in the superdiagonal part of A. Ifuplo='L': factor L in the subdiagonal part of A.
For more info see the description of
dsytrf_rk.
For a 1-by-1 diagonal block
D(k), the elementE[k]is set to 0 in bothuplo='U'oruplo='L'cases.For more info see the description of
dsytrf_rk.
For more info see the description of
dsytrf_rk.Parameters
inuplo'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.inoutAArray of dimension
(lda,n). On entry, the symmetric matrix A. Ifuplo='U', the leadingn-by-nupper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. Ifuplo='L', the leadingn-by-nlower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, ifinfo=0, diagonal of the block diagonal matrix D and factors U or L as computed bydsytrf_rk:inldaThe leading dimension of the array A.
lda>=max(1,n).outEArray of dimension
n. On exit, contains the output computed by the factorization routinedsytrf_rk, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where ifuplo='U':E[i]=D(i-1,i),i=1:n-1,E[0]is set to 0; ifuplo='L':E[i]=D(i+1,i),i=0:n-2,E[n-1]is set to 0.outipivArray of dimension
n. Details of the interchanges and the block structure of D, as determined bydsytrf_rk.inoutBArray of dimension
(ldb,nrhs). On entry, then-by-nrhsright hand side matrix B. On exit, ifinfo=0, then-by-nrhssolution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkArray of dimension
max(1,lwork). Work array used in the factorization stage. On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1. For best performance of the factorization stagelwork>=n*nb, wherenbis the optimal block size fordsytrf_rk. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray for the factorization stage, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-k, the k-th argument had an illegal valueinfo>0: ifinfo=k, the matrix A is singular, because column k in the upper (uplo='U') or lower (uplo='L') triangular part of A contains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of column k of U (or subdiagonal elements of column k of L) are all zeros. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
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_rkis 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 routinecsytrs_3.Only diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k)=A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), andIf
uplo='U': factor U in the superdiagonal part of A. Ifuplo='L': factor L in the subdiagonal part of A.
For more info see the description of
csytrf_rk.
For a 1-by-1 diagonal block
D(k), the elementE[k]is set to 0 in bothuplo='U'oruplo='L'cases.For more info see the description of
csytrf_rk.
For more info see the description of
csytrf_rk.Parameters
inuplo'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.inoutAComplex array of dimension
(lda,n). On entry, the symmetric matrix A. Ifuplo='U', the leadingn-by-nupper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. Ifuplo='L', the leadingn-by-nlower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, ifinfo=0, diagonal of the block diagonal matrix D and factors U or L as computed bycsytrf_rk:inldaThe leading dimension of the array A.
lda>=max(1,n).outEComplex array of dimension
n. On exit, contains the output computed by the factorization routinecsytrf_rk, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where ifuplo='U':E[i]=D(i-1,i),i=1:n-1,E[0]is set to 0; ifuplo='L':E[i]=D(i+1,i),i=0:n-2,E[n-1]is set to 0.outipivArray of dimension
n. Details of the interchanges and the block structure of D, as determined bycsytrf_rk.inoutBComplex array of dimension
(ldb,nrhs). On entry, then-by-nrhsright hand side matrix B. On exit, ifinfo=0, then-by-nrhssolution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkComplex array of dimension
max(1,lwork). Work array used in the factorization stage. On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1. For best performance of the factorization stagelwork>=n*nb, wherenbis the optimal block size forcsytrf_rk. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray for the factorization stage, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-k, the k-th argument had an illegal valueinfo>0: ifinfo=k, the matrix A is singular, because column k in the upper (uplo='U') or lower (uplo='L') triangular part of A contains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of column k of U (or subdiagonal elements of column k of L) are all zeros. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
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_rkis 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 routinezsytrs_3.Only diagonal elements of the symmetric block diagonal matrix D on the diagonal of A, i.e.
D(k,k)=A(k,k); (superdiagonal (or subdiagonal) elements of D are stored on exit in arrayE), andIf
uplo='U': factor U in the superdiagonal part of A. Ifuplo='L': factor L in the subdiagonal part of A.
For more info see the description of
zsytrf_rk.
For a 1-by-1 diagonal block
D(k), the elementE[k]is set to 0 in bothuplo='U'oruplo='L'cases.For more info see the description of
zsytrf_rk.
For more info see the description of
zsytrf_rk.Parameters
inuplo'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.inoutAComplex array of dimension
(lda,n). On entry, the symmetric matrix A. Ifuplo='U', the leadingn-by-nupper triangular part of A contains the upper triangular part of the matrix A, and the strictly lower triangular part of A is not referenced. Ifuplo='L', the leadingn-by-nlower triangular part of A contains the lower triangular part of the matrix A, and the strictly upper triangular part of A is not referenced. On exit, ifinfo=0, diagonal of the block diagonal matrix D and factors U or L as computed byzsytrf_rk:inldaThe leading dimension of the array A.
lda>=max(1,n).outEComplex array of dimension
n. On exit, contains the output computed by the factorization routinezsytrf_rk, i.e. the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks, where ifuplo='U':E[i]=D(i-1,i),i=1:n-1,E[0]is set to 0; ifuplo='L':E[i]=D(i+1,i),i=0:n-2,E[n-1]is set to 0.outipivArray of dimension
n. Details of the interchanges and the block structure of D, as determined byzsytrf_rk.inoutBComplex array of dimension
(ldb,nrhs). On entry, then-by-nrhsright hand side matrix B. On exit, ifinfo=0, then-by-nrhssolution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkComplex array of dimension
max(1,lwork). Work array used in the factorization stage. On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1. For best performance of the factorization stagelwork>=n*nb, wherenbis the optimal block size forzsytrf_rk. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray for the factorization stage, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-k, the k-th argument had an illegal valueinfo>0: ifinfo=k, the matrix A is singular, because column k in the upper (uplo='U') or lower (uplo='L') triangular part of A contains all zeros. ThereforeD(k,k)is exactly zero, and superdiagonal elements of column k of U (or subdiagonal elements of column k of L) are all zeros. The factorization has been completed, but the block diagonal matrix D is exactly singular, and division by zero will occur if it is used to solve a system of equations.
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
);