NAG Library Routine Document
F07MSF (ZHETRS)
1 Purpose
F07MSF (ZHETRS) solves a complex Hermitian indefinite system of linear equations with multiple right-hand sides,
where
A has been factorized by
F07MRF (ZHETRF).
2 Specification
INTEGER |
N, NRHS, LDA, IPIV(*), LDB, INFO |
COMPLEX (KIND=nag_wp) |
A(LDA,*), B(LDB,*) |
CHARACTER(1) |
UPLO |
|
The routine may be called by its
LAPACK
name zhetrs.
3 Description
F07MSF (ZHETRS) is used to solve a complex Hermitian indefinite system of linear equations
AX=B, this routine must be preceded by a call to
F07MRF (ZHETRF) which computes the Bunch–Kaufman factorization of
A.
If UPLO='U', A=PUDUHPT, where P is a permutation matrix, U is an upper triangular matrix and D is an Hermitian block diagonal matrix with 1 by 1 and 2 by 2 blocks; the solution X is computed by solving PUDY=B and then UHPTX=Y.
If UPLO='L', A=PLDLHPT, where L is a lower triangular matrix; the solution X is computed by solving PLDY=B and then LHPTX=Y.
4 References
Golub G H and Van Loan C F (1996)
Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
5 Parameters
- 1: UPLO – CHARACTER(1)Input
On entry: specifies how
A has been factorized.
- UPLO='U'
- A=PUDUHPT, where U is upper triangular.
- UPLO='L'
- A=PLDLHPT, where L is lower triangular.
Constraint:
UPLO='U' or 'L'.
- 2: N – INTEGERInput
On entry: n, the order of the matrix A.
Constraint:
N≥0.
- 3: NRHS – INTEGERInput
On entry: r, the number of right-hand sides.
Constraint:
NRHS≥0.
- 4: A(LDA,*) – COMPLEX (KIND=nag_wp) arrayInput
-
Note: the second dimension of the array
A
must be at least
max1,N.
On entry: details of the factorization of
A, as returned by
F07MRF (ZHETRF).
- 5: LDA – INTEGERInput
On entry: the first dimension of the array
A as declared in the (sub)program from which F07MSF (ZHETRS) is called.
Constraint:
LDA≥max1,N.
- 6: IPIV(*) – INTEGER arrayInput
-
Note: the dimension of the array
IPIV
must be at least
max1,N.
On entry: details of the interchanges and the block structure of
D, as returned by
F07MRF (ZHETRF).
- 7: B(LDB,*) – COMPLEX (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
B
must be at least
max1,NRHS.
On entry: the n by r right-hand side matrix B.
On exit: the n by r solution matrix X.
- 8: LDB – INTEGERInput
On entry: the first dimension of the array
B as declared in the (sub)program from which F07MSF (ZHETRS) is called.
Constraint:
LDB≥max1,N.
- 9: INFO – INTEGEROutput
On exit:
INFO=0 unless the routine detects an error (see
Section 6).
6 Error Indicators and Warnings
Errors or warnings detected by the routine:
- INFO<0
If INFO=-i, the ith parameter had an illegal value. An explanatory message is output, and execution of the program is terminated.
7 Accuracy
For each right-hand side vector
b, the computed solution
x is the exact solution of a perturbed system of equations
A+Ex=b, where
- if UPLO='U', E≤cnεPUDUHPT;
- if UPLO='L', E≤cnεPLDLHPT,
cn is a modest linear function of
n, and
ε is the
machine precision.
If
x^ is the true solution, then the computed solution
x satisfies a forward error bound of the form
where
condA,x=A-1Ax∞/x∞≤condA=A-1A∞≤κ∞A.
Note that condA,x can be much smaller than condA.
Forward and backward error bounds can be computed by calling
F07MVF (ZHERFS), and an estimate for
κ∞A (
=κ1A) can be obtained by calling
F07MUF (ZHECON).
8 Further Comments
The total number of real floating point operations is approximately 8n2r.
This routine may be followed by a call to
F07MVF (ZHERFS) to refine the solution and return an error estimate.
The real analogue of this routine is
F07MEF (DSYTRS).
9 Example
This example solves the system of equations
AX=B, where
and
Here
A is Hermitian indefinite and must first be factorized by
F07MRF (ZHETRF).
9.1 Program Text
Program Text (f07msfe.f90)
9.2 Program Data
Program Data (f07msfe.d)
9.3 Program Results
Program Results (f07msfe.r)