hetf2_rk#

Functions

void chetf2_rk(
    const char*          uplo,
    const INT            n,
          c64*  restrict A,
    const INT            lda,
          c64*  restrict E,
          INT*  restrict ipiv,
          INT*           info
);
void chetf2_rk(const char *uplo, const INT n, c64 *restrict A, const INT lda, c64 *restrict E, INT *restrict ipiv, INT *info)#

CHETF2_RK computes the factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman (rook) diagonal pivoting method:

A = P*U*D*(U**H)*(P**T) or A = P*L*D*(L**H)*(P**T),

where U (or L) is unit upper (or lower) triangular matrix, U**H (or L**H) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.

This is the unblocked version of the algorithm, calling Level 2 BLAS.

Parameters

in
uplo

Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored: = ‘U’: Upper triangular = ‘L’: Lower triangular

in
n

The order of the matrix A. n >= 0.

inout
A

Single complex array, dimension (lda, n). On entry, the Hermitian matrix A. On exit, contains: a) ONLY diagonal elements of the Hermitian 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 array E), and b) If UPLO = ‘U’: factor U in the superdiagonal part of A. If UPLO = ‘L’: factor L in the subdiagonal part of A.

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 Hermitian block diagonal matrix D.

out
ipiv

Integer array, dimension (n). IPIV describes the permutation matrix P in the factorization.

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 zhetf2_rk(
    const char*          uplo,
    const INT            n,
          c128* restrict A,
    const INT            lda,
          c128* restrict E,
          INT*  restrict ipiv,
          INT*           info
);
void zhetf2_rk(const char *uplo, const INT n, c128 *restrict A, const INT lda, c128 *restrict E, INT *restrict ipiv, INT *info)#

ZHETF2_RK computes the factorization of a complex Hermitian matrix A using the bounded Bunch-Kaufman (rook) diagonal pivoting method:

A = P*U*D*(U**H)*(P**T) or A = P*L*D*(L**H)*(P**T),

where U (or L) is unit upper (or lower) triangular matrix, U**H (or L**H) is the conjugate of U (or L), P is a permutation matrix, P**T is the transpose of P, and D is Hermitian and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.

This is the unblocked version of the algorithm, calling Level 2 BLAS.

Parameters

in
uplo

Specifies whether the upper or lower triangular part of the Hermitian matrix A is stored: = ‘U’: Upper triangular = ‘L’: Lower triangular

in
n

The order of the matrix A. n >= 0.

inout
A

Double complex array, dimension (lda, n). On entry, the Hermitian matrix A. On exit, contains: a) ONLY diagonal elements of the Hermitian 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 array E), and b) If UPLO = ‘U’: factor U in the superdiagonal part of A. If UPLO = ‘L’: factor L in the subdiagonal part of A.

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 Hermitian block diagonal matrix D.

out
ipiv

Integer array, dimension (n). IPIV describes the permutation matrix P in the factorization.

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.