?geequb
?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
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
const float*
a
,
lapack_int
lda
,
float*
r
,
float*
c
,
float*
rowcnd
,
float*
colcnd
,
float*
amax
);
lapack_int LAPACKE_dgeequb
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
const double*
a
,
lapack_int
lda
,
double*
r
,
double*
c
,
double*
rowcnd
,
double*
colcnd
,
double*
amax
);
lapack_int LAPACKE_cgeequb
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
const lapack_complex_float*
a
,
lapack_int
lda
,
float*
r
,
float*
c
,
float*
rowcnd
,
float*
colcnd
,
float*
amax
);
lapack_int LAPACKE_zgeequb
(
int
matrix_layout
,
lapack_int
m
,
lapack_int
n
,
const lapack_complex_double*
a
,
lapack_int
lda
,
double*
r
,
double*
c
,
double*
rowcnd
,
double*
colcnd
,
double*
amax
);
Include Files
- mkl.h
Description
The routine computes row and column scalings intended to equilibrate an = * have an absolute value of at most the radix.
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-1]*a
i
,j
c
[j-1]r
[i-1]c
[j-1]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
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
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 matrixA;.m≥0
- n
- The number of columns of the matrixA;.n≥0
- a
- Array: sizemax(1,.lda*n) for column major layout and max(1,lda*m) for row major layoutContains them-by-nmatrixAwhose equilibration factors are to be computed.
- lda
- The leading dimension ofa;.lda≥max(1,m)
Output Parameters
- r,c
- Arrays:,r(m).c(n)If, orinfo= 0info>m, the arrayrcontains the row scale factors for the matrixA.If, the arrayinfo= 0ccontains the column scale factors for the matrixA.
- rowcnd
- Iforinfo= 0,info>mrowcndcontains the ratio of the smallestto the largestr[i]. Ifr[i], androwcnd≥0.1amaxis neither too large nor too small, it is not worth scaling byr.
- colcnd
- If,info= 0colcndcontains the ratio of the smallestto the largestc[i]. Ifc[i], it is not worth scaling bycolcnd≥0.1c.
- amax
- Absolute value of the largest element of the matrixA. Ifamaxis very close toSMLNUMor very close toBIGNUM, the matrix should be scaled.
Return Values
This function returns a value
info
.If , the execution is successful.
info
= 0If , parameter
info
= -i
i
had an illegal value.If , , and
info
= i
i
> 0i
≤
m
i
-th row of A
is exactly zero;i
>
m
i
-m
)-th column of A
is exactly zero.