Developer Reference for Intel® oneAPI Math Kernel Library for C
?geequb
Computes row and column scaling factors restricted to a power of radix to equilibrate a general matrix and reduce its condition number.
Syntax
lapack_int LAPACKE_sgeequb ( intmatrix_layout , lapack_intm , lapack_intn , const float*a , lapack_intlda , float*r , float*c , float*rowcnd , float*colcnd , float*amax );
lapack_int LAPACKE_dgeequb ( intmatrix_layout , lapack_intm , lapack_intn , const double*a , lapack_intlda , double*r , double*c , double*rowcnd , double*colcnd , double*amax );
lapack_int LAPACKE_cgeequb ( intmatrix_layout , lapack_intm , lapack_intn , const lapack_complex_float*a , lapack_intlda , float*r , float*c , float*rowcnd , float*colcnd , float*amax );
lapack_int LAPACKE_zgeequb ( intmatrix_layout , lapack_intm , lapack_intn , const lapack_complex_double*a , lapack_intlda , double*r , double*c , double*rowcnd , double*colcnd , double*amax );
Include Files
mkl.h
Description
sgeequb dgeequb cgeequb zgeequb
The routine computes row and column scalings intended to equilibrate an m -by- n general matrix A and reduce its condition number. The output array r returns the row scale factors and the array c - the column scale factors. These factors are chosen to try to make the largest element in each row and column of the matrix B with elements b_{i,j} =r(i)*a_{i,j}*c(j)b_{i,j} = r[i-1]*a_{i,j}*c[j-1] have an absolute value of at most the radix.
r(i)r[i-1] and c(j)c[j-1] are restricted to be a power of the radix between SMLNUM = smallest safe number and BIGNUM = largest safe number. Use of these scaling factors is not guaranteed to reduce the condition number of a but works well in practice.
SMLNUM and BIGNUM are parameters representing machine precision. You can use the ?lamch (Determines machine parameters for floating-point arithmetic.) routines to compute them. For example, compute single precision values of SMLNUM and BIGNUM as follows: SMLNUM = slamch (‘s’) BIGNUM = 1 / SMLNUM
This routine differs from ?geequ (Computes row and column scaling factors intended to equilibrate a general matrix and reduce its condition number.) by restricting the scaling factors to a power of the radix. Except for over- and underflow, scaling by these factors introduces no additional rounding errors. However, the scaled entries’ magnitudes are no longer equal to approximately 1 but lie between sqrt(radix) and 1/sqrt(radix) .
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
m
The number of rows of the matrix A ; m≥ 0 .
n
The number of columns of the matrix A ; n≥ 0 .
a
Array: size (lda,*) max(1, lda * n ) for column major layout and max(1, lda * m ) for row major layout .
Contains the m -by- n matrix A whose equilibration factors are to be computed.
lda
The leading dimension of a ; lda≥ max(1, m) .
Output Parameters
r , c
Arrays: r(m) , c(n) .
If info = 0 , or info > m , the array r contains the row scale factors for the matrix A .
If info = 0 , the array c contains the column scale factors for the matrix A .
rowcnd
If info = 0 or info>m , rowcnd contains the ratio of the smallest r(i)r[i] to the largest r(i)r[i] . If rowcnd≥ 0.1 , and amax is neither too large nor too small, it is not worth scaling by r .
colcnd
If info = 0 , colcnd contains the ratio of the smallest c(i)c[i] to the largest c(i)c[i] . If colcnd≥ 0.1 , it is not worth scaling by c .
amax
Absolute value of the largest element of the matrix A . If amax is very close to SMLNUM or very close to BIGNUM , the matrix should be scaled.
Return Values
This function returns a value info .
If info = 0 , the execution is successful.
If info = -i , parameter i had an illegal value.
If info = i , i > 0 , and
i≤m , the i -th row of A is exactly zero;
i>m , the ( i - m )-th column of A is exactly zero.