Estimates the reciprocal of the condition number of a Hermitian matrix.

## Syntax

lapack_int LAPACKE_checon( int matrix_layout, char uplo, lapack_int n, const lapack_complex_float* a, lapack_int lda, const lapack_int* ipiv, float anorm, float* rcond );

lapack_int LAPACKE_zhecon( int matrix_layout, char uplo, lapack_int n, const lapack_complex_double* a, lapack_int lda, const lapack_int* ipiv, double anorm, double* rcond );

• mkl.h

## Description

The routine estimates the reciprocal of the condition number of a Hermitian matrix A:

κ1(A) = ||A||1 ||A-1||1 (since A is Hermitian, κ(A) = κ1(A)).

Before calling this routine:

• compute anorm (either ||A||1 =maxjΣi |aij| or ||A|| =maxiΣj |aij|)

• call ?hetrf to compute the factorization of A.

## Input Parameters

 matrix_layout Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR). uplo Must be 'U' or 'L'. Indicates how the input matrix A has been factored: If uplo = 'U', the array a stores the upper triangular factor U of the factorization A = U*D*UH. If uplo = 'L', the array a stores the lower triangular factor L of the factorization A = L*D*LH. n The order of matrix A; n≥ 0. a The array a of size max(1, lda*n) contains the factored matrix A, as returned by ?hetrf. lda The leading dimension of a; lda≥ max(1, n). ipiv Array, size at least max(1, n). The array ipiv, as returned by ?hetrf. anorm The norm of the original matrix A (see Description).

## Output Parameters

 rcond An estimate of the reciprocal of the condition number. The routine sets rcond =0 if the estimate underflows; in this case the matrix is singular (to working precision). However, anytime rcond is small compared to 1.0, for the working precision, the matrix may be poorly conditioned or even singular.

## Return Values

This function returns a value info.

If info = 0, the execution is successful.

If info = -i, parameter i had an illegal value.

## Application Notes

The computed rcond is never less than r (the reciprocal of the true condition number) and in practice is nearly always less than 10r. A call to this routine involves solving a number of systems of linear equations A*x = b; the number is usually 5 and never more than 11. Each solution requires approximately 8n2 floating-point operations.