Developer Reference for Intel® oneAPI Math Kernel Library for C
?gbequb
Computes row and column scaling factors restricted to a power of radix to equilibrate a banded matrix and reduce its condition number.
Syntax
lapack_int LAPACKE_sgbequb ( intmatrix_layout , lapack_intm , lapack_intn , lapack_intkl , lapack_intku , const float*ab , lapack_intldab , float*r , float*c , float*rowcnd , float*colcnd , float*amax );
lapack_int LAPACKE_dgbequb ( intmatrix_layout , lapack_intm , lapack_intn , lapack_intkl , lapack_intku , const double*ab , lapack_intldab , double*r , double*c , double*rowcnd , double*colcnd , double*amax );
lapack_int LAPACKE_cgbequb ( intmatrix_layout , lapack_intm , lapack_intn , lapack_intkl , lapack_intku , const lapack_complex_float*ab , lapack_intldab , float*r , float*c , float*rowcnd , float*colcnd , float*amax );
lapack_int LAPACKE_zgbequb ( intmatrix_layout , lapack_intm , lapack_intn , lapack_intkl , lapack_intku , const lapack_complex_double*ab , lapack_intldab , double*r , double*c , double*rowcnd , double*colcnd , double*amax );
Include Files
mkl.h
Description
sgbequb dgbequb cgbequb zgbequb
The routine computes row and column scalings intended to equilibrate an m -by- n banded 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(ij)=r(i)*a(ij)*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) and c(j)r[i] and c[j] 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 ?gbequ (Computes row and column scaling factors intended to equilibrate a banded 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 .
kl
The number of subdiagonals within the band of A ; kl≥ 0 .
ku
The number of superdiagonals within the band of A ; ku≥ 0 .
ab
Array: size max(1, ldab * n ) for column major layout and max(1, ldab * m ) for row major layout
ldab
The leading dimension of a ; ldab≥ max(1, m) .
Output Parameters
r , c
Arrays: r (size m ), c (size 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 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 , the i -th diagonal element of A is nonpositive.
i≤m , the i -th row of A is exactly zero;
i>m , the ( i - m )-th column of A is exactly zero.