sytrf_aa_2stage#
Functions
-
void ssytrf_aa_2stage(const char *uplo, const INT n, f32 *restrict A, const INT lda, f32 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, f32 *restrict work, const INT lwork, INT *info)#
SSYTRF_AA_2STAGE computes the factorization of a real symmetric matrix A using the Aasen’s algorithm.
The form of the factorization is
A = U**T*T*U or A = L*T*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a symmetric band matrix with the bandwidth of NB (NB is internally selected and stored in TB[0], and T is LU factorized with partial pivoting).
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.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 columnipiv2[k].outworkArray of dimension
max(1,lwork).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 ssytrf_aa_2stage(
const char* uplo,
const INT n,
f32* restrict A,
const INT lda,
f32* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
f32* restrict work,
const INT lwork,
INT* info
);
Functions
-
void dsytrf_aa_2stage(const char *uplo, const INT n, f64 *restrict A, const INT lda, f64 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, f64 *restrict work, const INT lwork, INT *info)#
DSYTRF_AA_2STAGE computes the factorization of a real symmetric matrix A using the Aasen’s algorithm.
The form of the factorization is
A = U**T*T*U or A = L*T*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a symmetric band matrix with the bandwidth of NB (NB is internally selected and stored in TB[0], and T is LU factorized with partial pivoting).
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.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 columnipiv2[k].outworkArray of dimension
max(1,lwork).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 dsytrf_aa_2stage(
const char* uplo,
const INT n,
f64* restrict A,
const INT lda,
f64* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
f64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void csytrf_aa_2stage(const char *uplo, const INT n, c64 *restrict A, const INT lda, c64 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, c64 *restrict work, const INT lwork, INT *info)#
CSYTRF_AA_2STAGE computes the factorization of a complex symmetric matrix A using the Aasen’s algorithm.
The form of the factorization is
A = U**T*T*U or A = L*T*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a complex symmetric band matrix with the bandwidth of NB (NB is internally selected and stored in TB[0], and T is LU factorized with partial pivoting).
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.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 columnipiv2[k].outworkComplex workspace of size
max(1,lwork).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 csytrf_aa_2stage(
const char* uplo,
const INT n,
c64* restrict A,
const INT lda,
c64* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
c64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void zsytrf_aa_2stage(const char *uplo, const INT n, c128 *restrict A, const INT lda, c128 *restrict TB, const INT ltb, INT *restrict ipiv, INT *restrict ipiv2, c128 *restrict work, const INT lwork, INT *info)#
ZSYTRF_AA_2STAGE computes the factorization of a complex symmetric matrix A using the Aasen’s algorithm.
The form of the factorization is
A = U**T*T*U or A = L*T*L**T
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a complex symmetric band matrix with the bandwidth of NB (NB is internally selected and stored in TB[0], and T is LU factorized with partial pivoting).
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.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 columnipiv2[k].outworkComplex workspace of size
max(1,lwork).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 zsytrf_aa_2stage(
const char* uplo,
const INT n,
c128* restrict A,
const INT lda,
c128* restrict TB,
const INT ltb,
INT* restrict ipiv,
INT* restrict ipiv2,
c128* restrict work,
const INT lwork,
INT* info
);