Estimates the reciprocal of the condition number of a general matrix in the 1-norm or the infinity-norm.

## Syntax

lapack_int LAPACKE_sgecon( int matrix_layout, char norm, lapack_int n, const float* a, lapack_int lda, float anorm, float* rcond );

lapack_int LAPACKE_dgecon( int matrix_layout, char norm, lapack_int n, const double* a, lapack_int lda, double anorm, double* rcond );

lapack_int LAPACKE_cgecon( int matrix_layout, char norm, lapack_int n, const lapack_complex_float* a, lapack_int lda, float anorm, float* rcond );

lapack_int LAPACKE_zgecon( int matrix_layout, char norm, lapack_int n, const lapack_complex_double* a, lapack_int lda, double anorm, double* rcond );

• mkl.h

## Description

The routine estimates the reciprocal of the condition number of a general matrix A in the 1-norm or infinity-norm:

κ1(A) =||A||1||A-1||1 = κ(AT) = κ(AH)

κ(A) =||A||||A-1|| = κ1(AT) = κ1(AH).

An estimate is obtained for ||A-1||, and the reciprocal of the condition number is computed as rcond = 1 / (||A|| ||A-1||).

Before calling this routine:

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

• call ?getrf to compute the LU factorization of A.

## Input Parameters

 matrix_layout Specifies whether matrix storage layout is row major (LAPACK_ROW_MAJOR) or column major (LAPACK_COL_MAJOR). norm Must be '1' or 'O' or 'I'. If norm = '1' or 'O', then the routine estimates the condition number of matrix A in 1-norm. If norm = 'I', then the routine estimates the condition number of matrix A in infinity-norm. n The order of the matrix A; n≥ 0. a The array a contains the LU-factored matrix A, as returned by ?getrf. anorm The norm of the original matrix A (see Description). lda The leading dimension of a; lda≥ max(1, n).

## 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 or AH*x = b; the number is usually 4 or 5 and never more than 11. Each solution requires approximately 2*n2 floating-point operations for real flavors and 8*n2 for complex flavors.