?hetrs
?hetrs
Solves a system of linear equations with a UDU
T
- or LDLT
-factored Hermitian coefficient matrix.Syntax
lapack_int
LAPACKE_chetrs
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
const
lapack_complex_float
*
a
,
lapack_int
lda
,
const
lapack_int
*
ipiv
,
lapack_complex_float
*
b
,
lapack_int
ldb
);
lapack_int
LAPACKE_zhetrs
(
int
matrix_layout
,
char
uplo
,
lapack_int
n
,
lapack_int
nrhs
,
const
lapack_complex_double
*
a
,
lapack_int
lda
,
const
lapack_int
*
ipiv
,
lapack_complex_double
*
b
,
lapack_int
ldb
);
Include Files
- mkl.h
Description
The routine solves for with a Hermitian matrix
X
the system of linear equations A*X
= B
A
, given the Bunch-Kaufman factorization of A
:- if,uplo='U'
- A=U*D*UH
- if,uplo='L'
- ,A=L*D*LH
where
U
and L
are upper and lower triangular matrices with unit diagonal and D
is a symmetric block-diagonal matrix. The system is solved with multiple right-hand sides stored in the columns of the matrix B
. You must supply to this routine the factor U
(or L
) and the array ipiv
returned by the factorization routine ?hetrf
.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 how the input matrixAhas been factored:If, the arrayuplo='U'astores the upper triangular factorUof the factorizationA=.U*D*UHIf, the arrayuplo='L'astores the lower triangular factorLof the factorizationA=.L*D*LH
- n
- The order of matrixA;n≥0.
- nrhs
- The number of right-hand sides;nrhs≥0.
- ipiv
- Array, size at leastmax(1,.n)Theipivarray, as returned by?hetrf.
- a
- The arrayaof size max(1,contains the factorlda*n)UorL(seeuplo).
- b
- The arraybcontains the matrixBwhose columns are the right-hand sides for the system of equations.The size ofbis at least max(1,ldb*nrhs) for column major layout and max(1,ldb*n) for row major layout.
- lda
- The leading dimension ofa;.lda≥max(1,n)
- ldb
- The leading dimension ofb;.ldb≥max(1,n) for column major layout andldb≥nrhsfor row major layout
Output Parameters
- b
- Overwritten by the solution matrixX.
Return Values
This function returns a value
info
.If , the execution is successful.
info
=0If , parameter
info
= -i
i
had an illegal value.Application Notes
For each right-hand side
b
, the computed solution is the exact solution of a perturbed system of equations (
, where A
+ E
)x
= b
|E| ≤ c(n)ε P|U||D||UH|PTor |E| ≤ c(n)ε P|L||D||LH|PT
c
(n
)n
, and ε
is the machine precision.If is the true solution, the computed solution
x
0
x
satisfies this error bound:
where / || || = (
cond(
= || |A
,x
)A
-1
||A
| |x
| ||∞
x
||∞
≤
||A
-1
||∞
A
||∞
κ
∞
A
).Note that (.
cond(
can be much smaller than A
,x
)κ
∞
A
)The total number of floating-point operations for one right-hand side vector is approximately
8
.n
2
To estimate the condition number (, call
κ
∞
A
)?hecon
. To refine the solution and estimate the error, call
?herfs
.