sysv_aa_2stage#
Functions
-
void ssysv_aa_2stage(const char *uplo, const INT n, const INT nrhs, f32 *restrict A, const INT lda, f32 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, f32 *restrict B, const INT ldb, f32 *restrict work, const INT lwork, INT *info)#
SSYSV_AA_2STAGE 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.
Aasen’s 2-stage algorithm is used to factor A as A = U**T * T * U, if UPLO = ‘U’, or A = L * T * L**T, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.
This is the blocked version of the algorithm, calling Level 3 BLAS.
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe 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, L is stored below (or above) the subdiagonal blocks, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).outTBArray of dimension
max(1,ltb). On exit, details of the LU factorization of the band matrix.inltbThe size of the array TB.
ltb>=max(1,4*n), internally used to selectnbsuch thatltb>=(3*nb+1)*n. Ifltb=-1, then a workspace query is assumed; the routine only calculates the optimal size ofltb, returns this value as the first entry of TB, and no error message related toltbis issued.outipivArray of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof A were interchanged with the row and columnipiv[k].outipiv2Array of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof T were interchanged with the row and columnipiv[k].inoutBArray of dimension
(ldb,nrhs). On entry, the right hand side matrix B. On exit, the solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkArray of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe size of
work.lwork>=max(1,n), internally used to selectnbsuch thatlwork>=n*nb. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i, band LU factorization failed on the i-th column
void ssysv_aa_2stage(
const char* uplo,
const INT n,
const INT nrhs,
f32* restrict A,
const INT lda,
f32* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
f32* restrict B,
const INT ldb,
f32* restrict work,
const INT lwork,
INT* info
);
Functions
-
void dsysv_aa_2stage(const char *uplo, const INT n, const INT nrhs, f64 *restrict A, const INT lda, f64 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, f64 *restrict B, const INT ldb, f64 *restrict work, const INT lwork, INT *info)#
DSYSV_AA_2STAGE 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.
Aasen’s 2-stage algorithm is used to factor A as A = U**T * T * U, if UPLO = ‘U’, or A = L * T * L**T, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.
This is the blocked version of the algorithm, calling Level 3 BLAS.
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe 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, L is stored below (or above) the subdiagonal blocks, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).outTBArray of dimension
max(1,ltb). On exit, details of the LU factorization of the band matrix.inltbThe size of the array TB.
ltb>=max(1,4*n), internally used to selectnbsuch thatltb>=(3*nb+1)*n. Ifltb=-1, then a workspace query is assumed; the routine only calculates the optimal size ofltb, returns this value as the first entry of TB, and no error message related toltbis issued.outipivArray of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof A were interchanged with the row and columnipiv[k].outipiv2Array of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof T were interchanged with the row and columnipiv[k].inoutBArray of dimension
(ldb,nrhs). On entry, the right hand side matrix B. On exit, the solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkArray of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe size of
work.lwork>=max(1,n), internally used to selectnbsuch thatlwork>=n*nb. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i, band LU factorization failed on the i-th column
void dsysv_aa_2stage(
const char* uplo,
const INT n,
const INT nrhs,
f64* restrict A,
const INT lda,
f64* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
f64* restrict B,
const INT ldb,
f64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void csysv_aa_2stage(const char *uplo, const INT n, const INT nrhs, c64 *restrict A, const INT lda, c64 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, c64 *restrict B, const INT ldb, c64 *restrict work, const INT lwork, INT *info)#
CSYSV_AA_2STAGE 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.
Aasen’s 2-stage algorithm is used to factor A as A = U**T * T * U, if UPLO = ‘U’, or A = L * T * L**T, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.
This is the blocked version of the algorithm, calling Level 3 BLAS.
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe 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, L is stored below (or above) the subdiagonal blocks, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).outTBComplex array of dimension
max(1,ltb). On exit, details of the LU factorization of the band matrix.inltbThe size of the array TB.
ltb>=max(1,4*n), internally used to selectnbsuch thatltb>=(3*nb+1)*n. Ifltb=-1, then a workspace query is assumed; the routine only calculates the optimal size ofltb, returns this value as the first entry of TB, and no error message related toltbis issued.outipivArray of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof A were interchanged with the row and columnipiv[k].outipiv2Array of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof T were interchanged with the row and columnipiv[k].inoutBComplex array of dimension
(ldb,nrhs). On entry, the right hand side matrix B. On exit, the solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkComplex array of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe size of
work.lwork>=max(1,n), internally used to selectnbsuch thatlwork>=n*nb. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i, band LU factorization failed on the i-th column
void csysv_aa_2stage(
const char* uplo,
const INT n,
const INT nrhs,
c64* restrict A,
const INT lda,
c64* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
c64* restrict B,
const INT ldb,
c64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void zsysv_aa_2stage(const char *uplo, const INT n, const INT nrhs, c128 *restrict A, const INT lda, c128 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, c128 *restrict B, const INT ldb, c128 *restrict work, const INT lwork, INT *info)#
ZSYSV_AA_2STAGE 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.
Aasen’s 2-stage algorithm is used to factor A as A = U**T * T * U, if UPLO = ‘U’, or A = L * T * L**T, if UPLO = ‘L’, where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is symmetric and band. The matrix T is then LU-factored with partial pivoting. The factored form of A is then used to solve the system of equations A * X = B.
This is the blocked version of the algorithm, calling Level 3 BLAS.
Parameters
inuplo'U': Upper triangle of A is stored'L': Lower triangle of A is stored
innThe 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, L is stored below (or above) the subdiagonal blocks, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).outTBComplex array of dimension
max(1,ltb). On exit, details of the LU factorization of the band matrix.inltbThe size of the array TB.
ltb>=max(1,4*n), internally used to selectnbsuch thatltb>=(3*nb+1)*n. Ifltb=-1, then a workspace query is assumed; the routine only calculates the optimal size ofltb, returns this value as the first entry of TB, and no error message related toltbis issued.outipivArray of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof A were interchanged with the row and columnipiv[k].outipiv2Array of dimension
n. On exit, it contains the details of the interchanges, i.e., the row and columnkof T were interchanged with the row and columnipiv[k].inoutBComplex array of dimension
(ldb,nrhs). On entry, the right hand side matrix B. On exit, the solution matrix X.inldbThe leading dimension of the array B.
ldb>=max(1,n).outworkComplex array of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe size of
work.lwork>=max(1,n), internally used to selectnbsuch thatlwork>=n*nb. Iflwork=-1, then a workspace query is assumed; the routine only calculates the optimal size of theworkarray, returns this value as the first entry of theworkarray, and no error message related tolworkis issued.outinfoinfo=0: successful exitinfo<0: ifinfo=-i, the i-th argument had an illegal valueinfo>0: ifinfo=i, band LU factorization failed on the i-th column
void zsysv_aa_2stage(
const char* uplo,
const INT n,
const INT nrhs,
c128* restrict A,
const INT lda,
c128* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
c128* restrict B,
const INT ldb,
c128* restrict work,
const INT lwork,
INT* info
);