Developer Reference for Intel® oneAPI Math Kernel Library for C
?sycon_3
Estimates the reciprocal of the condition number (in the 1-norm) of a real or complex symmetric matrix A using the factorization computed by ?sytrf_rk .
Syntax
lapack_int LAPACKE_ssycon_3(int matrix_layout, char uplo, lapack_int n, const float *A,
lapack_int lda, const float *e, const lapack_int *ipiv,
float anorm, float *rcond);
lapack_int LAPACKE_dsycon_3(int matrix_layout, char uplo, lapack_int n, const double *A,
lapack_int lda, const double *e, const lapack_int *ipiv,
double anorm, double *rcond);
lapack_int LAPACKE_csycon_3(int matrix_layout, char uplo, lapack_int n,
const lapack_complex_float *A, lapack_int lda,
const lapack_complex_float *e, const lapack_int *ipiv,
float anorm, float *rcond);
lapack_int LAPACKE_zsycon_3(int matrix_layout, char uplo, lapack_int n,
const lapack_complex_double *A, lapack_int lda,
const lapack_complex_double *e, const lapack_int *ipiv,
double anorm, double *rcond);
Description
?sycon_3 estimates the reciprocal of the condition number (in the 1-norm) of a real or complex symmetric matrix A using the factorization computed by ?sytrf_rk . A = P*U*D*(U T )*(P T ) or A = P*L*D*(L T )*(P T ), where U (or L) is unit upper (or lower) triangular matrix, U T (or L T ) is the transpose of U (or L), P is a permutation matrix, P T is the transpose of P, and D is symmetric and block diagonal with 1-by-1 and 2-by-2 diagonal blocks.
An estimate is obtained for norm(inv(A)), and the reciprocal of the condition number is computed as rcond = 1 / ( anorm * norm(inv(A))).
This routine uses BLAS3 solver ?sytrs_3 .
Input Parameters
- matrix_layout
-
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
- uplo
-
CHARACTER*1 Specifies whether the details of the factorization are stored as an upper or lower triangular matrix:
- n
-
Specifies the order of the matrix A . The value of n must be at least zero.
- A
-
REAL for ssycon_3 DOUBLE PRECISION for dsycon_3 COMPLEX for csycon_3 COMPLEX*16 for zsycon_3
Array of size max(1, lda * n ). Diagonal of the block diagonal matrix D and factors U or L as computed by ?sytrf_rk :
- lda
-
INTEGER
The leading dimension of the array A .
- e
-
REAL for ssycon_3 DOUBLE PRECISION for dsycon_3 COMPLEX for csycon_3 COMPLEX*16 for zsycon_3
Array of size n . On entry, contains the superdiagonal (or subdiagonal) elements of the symmetric block diagonal matrix D with 1-by-1 or 2-by-2 diagonal blocks. If uplo = 'U' , e( i ) = D( i- 1, i ), i =2:N, and e(1) is not referenced. If uplo = 'L' , e( i ) = D( i +1, i ), i =1:N - 1, and e( n ) is not referenced.
- ipiv
-
INTEGER
Array of size n . Details of the interchanges and the block structure of D as determined by ?sytrf_rk .
- anorm
-
REAL for ssycon_3 DOUBLE PRECISION for dsycon_3 REAL for csycon_3 DOUBLE PRECISION for zsycon_3 The 1-norm of the original matrix A.
Output Parameters
- rcond
-
REAL for ssycon_3 DOUBLE PRECISION for dsycon_3 REAL for csycon_3 DOUBLE PRECISION for zsycon_3 The reciprocal of the condition number of the matrix A, computed as rcond = 1/( anorm * AINVNM ), where AINVNM is an estimate of the 1-norm of inv(A) computed in this routine.
- work
-
REAL for ssycon_3 DOUBLE PRECISION for dsycon_3 COMPLEX for csycon_3 COMPLEX*16 for zsycon_3 Array, dimension (2* n )
- iwork
-
INTEGER Array, dimension ( n ).
Return Values
This function returns a value info .
If info = 0, the execution is successful.
If info = -i , the ith argument had an illegal value.