hetrf_aa#
Functions
-
void chetrf_aa(const char *uplo, const INT n, c64 *restrict A, const INT lda, INT *restrict ipiv, c64 *restrict work, const INT lwork, INT *info)#
CHETRF_AA computes the factorization of a complex Hermitian matrix A using the Aasen’s algorithm.
The form of the factorization is
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a Hermitian tridiagonal matrix.A = U**H*T*U or A = L*T*L**H
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 Hermitian 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, the tridiagonal matrix is stored in the diagonals and the subdiagonals of A just below (or above) the diagonals, and L is stored below (or above) the subdiagonals, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).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].outworkArray of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1, ifn<=1, andlwork>=2*n, otherwise. For optimum performancelwork>=n*(1+nb), wherenbis the optimal block size, returned by ILAENV. 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 value
void chetrf_aa(
const char* uplo,
const INT n,
c64* restrict A,
const INT lda,
INT* restrict ipiv,
c64* restrict work,
const INT lwork,
INT* info
);
Functions
-
void zhetrf_aa(const char *uplo, const INT n, c128 *restrict A, const INT lda, INT *restrict ipiv, c128 *restrict work, const INT lwork, INT *info)#
ZHETRF_AA computes the factorization of a complex Hermitian matrix A using the Aasen’s algorithm.
The form of the factorization is
where U (or L) is a product of permutation and unit upper (lower) triangular matrices, and T is a Hermitian tridiagonal matrix.A = U**H*T*U or A = L*T*L**H
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 Hermitian 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, the tridiagonal matrix is stored in the diagonals and the subdiagonals of A just below (or above) the diagonals, and L is stored below (or above) the subdiagonals, whenuplo='L'(or'U').inldaThe leading dimension of the array A.
lda>=max(1,n).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].outworkArray of dimension
max(1,lwork). On exit, ifinfo=0,work[0]returns the optimallwork.inlworkThe length of
work.lwork>=1, ifn<=1, andlwork>=2*n, otherwise. For optimum performancelwork>=n*(1+nb), wherenbis the optimal block size, returned by ILAENV. 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 value
void zhetrf_aa(
const char* uplo,
const INT n,
c128* restrict A,
const INT lda,
INT* restrict ipiv,
c128* restrict work,
const INT lwork,
INT* info
);