Developer Reference for Intel® oneAPI Math Kernel Library for C
p?gecon
Estimates the reciprocal of the condition number of a general distributed matrix in either the 1-norm or the infinity-norm.
Syntax
voidpsgecon ( char*norm , MKL_INT*n , float*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , float*anorm , float*rcond , float*work , MKL_INT*lwork , MKL_INT*iwork , MKL_INT*liwork , MKL_INT*info );
voidpdgecon ( char*norm , MKL_INT*n , double*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , double*anorm , double*rcond , double*work , MKL_INT*lwork , MKL_INT*iwork , MKL_INT*liwork , MKL_INT*info );
voidpcgecon ( char*norm , MKL_INT*n , MKL_Complex8*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , float*anorm , float*rcond , MKL_Complex8*work , MKL_INT*lwork , float*rwork , MKL_INT*lrwork , MKL_INT*info );
voidpzgecon ( char*norm , MKL_INT*n , MKL_Complex16*a , MKL_INT*ia , MKL_INT*ja , MKL_INT*desca , double*anorm , double*rcond , MKL_Complex16*work , MKL_INT*lwork , double*rwork , MKL_INT*lrwork , MKL_INT*info );
Include Files
mkl_scalapack.h
Description
The p?gecon routine function estimates the reciprocal of the condition number of a general distributed real/complex matrix sub( A ) = A ( ia : ia + n -1, ja : ja + n -1) in either the 1-norm or infinity-norm, using the LU factorization computed by p?getrf (Computes the LU factorization of a general m-by-n distributed matrix.) .
An estimate is obtained for ||(sub( A )) -1 || , and the reciprocal of the condition number is computed as
Input Parameters
norm
(global) Must be ‘1’ or ‘O’ or ‘I’ .
Specifies whether the 1-norm condition number or the infinity-norm condition number is required. If norm = '1' or ‘O’ , then the 1-norm is used; If norm = 'I' , then the infinity-norm is used.
n
(global) The order of the distributed matrix sub( A ) (n≥ 0) .
- a
-
(local) REAL for psgecon DOUBLE PRECISION for pdgecon COMPLEX for pcgecon DOUBLE COMPLEX for pzgecon .
Pointer into the local memory to an array of size (lld_a,LOCc(ja+n-1))lld_a * LOCc ( ja + n -1) .
The array a contains the local pieces of the factors L and U from the factorization sub( A ) = P*L*U ; the unit diagonal elements of L are not stored.
ia , ja
(global) The row and column indices in the global matrix A indicating the first row and the first column of the matrix sub( A ), respectively.
desca
(global and local) array of size dlen_ . The array descriptor for the distributed matrix A .
anorm
(global)
If norm = '1' or ‘O’ , the 1-norm of the original distributed matrix sub( A ); If norm = 'I' , the infinity-norm of the original distributed matrix sub( A ).
- work
-
(local) REAL for psgecon DOUBLE PRECISION for pdgecon COMPLEX for pcgecon DOUBLE COMPLEX for pzgecon . The array work of size lwork is a workspace array.
lwork
(local or global) The size of the array work .
For real flavors:lwork must be at least lwork≥ 2*LOCr(n+mod(ia-1,mb_a))+2*LOCc(n+mod(ja-1,nb_a))+max(2, max(nb_a*max(1, iceil(NPROW-1, NPCOL)) , LOCc(n+mod(ja-1,nb_a)) + nb_a*max(1, iceil(NPCOL-1, NPROW)))) . For complex flavors:lwork must be at least lwork≥ 2*LOCr(n+mod(ia-1,mb_a))+max(2, max(nb_a*iceil(NPROW-1, NPCOL) , LOCc(n+mod(ja-1,nb_a))+ nb_a*iceil(NPCOL-1, NPROW))) .
LOCr and LOCc values can be computed using the ScaLAPACK tool function numroc ; NPROW and NPCOL can be determined by calling the function blacs_gridinfo .
iwork
(local) Workspace array of size liwork . Used in real flavors only.
liwork
(local or global) The size of the array iwork ; used in real flavors only. Must be at least
liwork≥LOCr(n+mod(ia-1,mb_a)) .
rwork
(local)
DOUBLE PRECISION for pzgecon Workspace array of size lrwork . Used in complex flavors only.
lrwork
(local or global) The size of the array rwork ; used in complex flavors only. Must be at least
lrwork≥ max(1, 2*LOCc(n+mod(ja-1,nb_a))) .
Output Parameters
rcond
(global)
DOUBLE PRECISION for double precision flavors. The reciprocal of the condition number of the distributed matrix sub( A ). See Description.
work(1)[0]
On exit, work(1)[0] contains the minimum value of lwork required for optimum performance.
iwork(1)[0]
On exit, iwork(1)[0] contains the minimum value of liwork required for optimum performance (for real flavors).
rwork(1)[0]
On exit, rwork(1)[0] contains the minimum value of lrwork required for optimum performance (for complex flavors).
info
(global) If info=0 , the execution is successful.
info < 0:
If the i -th argument is an array and the j- th entry , indexed j - 1, had an illegal value, then info = -( i *100+ j ); if the i- th argument is a scalar and had an illegal value, then info = -i .