Developer Reference for Intel® oneAPI Math Kernel Library for C
?pbequ
Computes row and column scaling factors intended to equilibrate a symmetric (Hermitian) positive-definite band matrix and reduce its condition number.
Syntax
lapack_int LAPACKE_spbequ ( intmatrix_layout , charuplo , lapack_intn , lapack_intkd , const float*ab , lapack_intldab , float*s , float*scond , float*amax );
lapack_int LAPACKE_dpbequ ( intmatrix_layout , charuplo , lapack_intn , lapack_intkd , const double*ab , lapack_intldab , double*s , double*scond , double*amax );
lapack_int LAPACKE_cpbequ ( intmatrix_layout , charuplo , lapack_intn , lapack_intkd , const lapack_complex_float*ab , lapack_intldab , float*s , float*scond , float*amax );
lapack_int LAPACKE_zpbequ ( intmatrix_layout , charuplo , lapack_intn , lapack_intkd , const lapack_complex_double*ab , lapack_intldab , double*s , double*scond , double*amax );
Include Files
mkl.h
Description
spbequ dpbequ cpbequ zpbequ pbequ
The routine computes row and column scalings intended to equilibrate a symmetric (Hermitian) positive definite band matrix A and reduce its condition number (with respect to the two-norm).
The output array s returns scale factors such that s[i - 1] contains
\[\frac{1}{\sqrt{a_{i,i}}}\]
These factors are chosen so that the scaled matrix B with elements b_{ij}=s[i-1]*a_{ij}*s[j-1] has diagonal elements equal to 1.
This choice of s puts the condition number of B within a factor n of the smallest possible condition number over all possible diagonal scalings.
See ?laqsb (Scales a symmetric band matrix, using scaling factors computed by ?pbequ.) auxiliary function that uses scaling factors computed by ?pbequ .
Input Parameters
matrix_layout
Specifies whether matrix storage layout is row major ( LAPACK_ROW_MAJOR ) or column major ( LAPACK_COL_MAJOR ).
uplo
Must be ‘U’ or ‘L’ .
Indicates whether the upper or lower triangular part of A is stored in the array ab :
If uplo = 'U' , the array ab stores the upper triangular part of the matrix A .
If uplo = 'L' , the array ab stores the lower triangular part of the matrix A .
n
The order of matrix A ; n≥ 0 .
kd
The number of superdiagonals or subdiagonals in the matrix A ; kd ≥ 0.
ab
Array, size max(1, ldab * n ) .
The array ap contains either the upper or the lower triangular part of the matrix A (as specified by uplo ) in band storage (see Matrix Storage Schemes ).
ldab
The leading dimension of the array ab ; ldab ≥ kd +1.
Output Parameters
s
Array, size ( n ).
If info = 0 , the array s contains the scale factors for A .
scond
If info = 0 , scond contains the ratio of the smallest s[i] to the largest s[i] .
amax
Absolute value of the largest element of the matrix A .
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.
LAPACK 95 Interface Notes
There exist FORTRAN 77 and FORTRAN 95 interfaces for this routine. See the Intel® oneMKL Fortran Developer Reference for details.
Application Notes
If scond≥ 0.1 and amax is neither too large nor too small, it is not worth scaling by s .
If amax is very close to SMLNUM or very close to BIGNUM , the matrix \(A\) should be scaled.