NAG Library Routine Document
F07PNF (ZHPSV)
1 Purpose
F07PNF (ZHPSV) computes the solution to a complex system of linear equations
where
A is an
n by
n Hermitian matrix stored in packed format and
X and
B are
n by
r matrices.
2 Specification
INTEGER |
N, NRHS, IPIV(N), LDB, INFO |
COMPLEX (KIND=nag_wp) |
AP(*), B(LDB,*) |
CHARACTER(1) |
UPLO |
|
The routine may be called by its
LAPACK
name zhpsv.
3 Description
F07PNF (ZHPSV) uses the diagonal pivoting method to factor A as A=UDUH if UPLO='U' or A=LDLH if UPLO='L', where U (or L) is a product of permutation and unit upper (lower) triangular matrices, D is Hermitian and block diagonal with 1 by 1 and 2 by 2 diagonal blocks. The factored form of A is then used to solve the system of equations AX=B.
4 References
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J J, Du Croz J J, Greenbaum A, Hammarling S, McKenney A and Sorensen D (1999)
LAPACK Users' Guide (3rd Edition) SIAM, Philadelphia
http://www.netlib.org/lapack/lug
Golub G H and Van Loan C F (1996)
Matrix Computations (3rd Edition) Johns Hopkins University Press, Baltimore
Higham N J (2002)
Accuracy and Stability of Numerical Algorithms (2nd Edition) SIAM, Philadelphia
5 Parameters
- 1: UPLO – CHARACTER(1)Input
On entry: if
UPLO='U', the upper triangle of
A is stored.
If UPLO='L', the lower triangle of A is stored.
Constraint:
UPLO='U' or 'L'.
- 2: N – INTEGERInput
On entry: n, the number of linear equations, i.e., the order of the matrix A.
Constraint:
N≥0.
- 3: NRHS – INTEGERInput
On entry: r, the number of right-hand sides, i.e., the number of columns of the matrix B.
Constraint:
NRHS≥0.
- 4: AP(*) – COMPLEX (KIND=nag_wp) arrayInput/Output
-
Note: the dimension of the array
AP
must be at least
max1,N×N+1/2.
On entry: the
n by
n Hermitian matrix
A, packed by columns.
More precisely,
- if UPLO='U', the upper triangle of A must be stored with element Aij in APi+jj-1/2 for i≤j;
- if UPLO='L', the lower triangle of A must be stored with element Aij in APi+2n-jj-1/2 for i≥j.
On exit: the block diagonal matrix
D and the multipliers used to obtain the factor
U or
L from the factorization
A=UDUH or
A=LDLH as computed by
F07PRF (ZHPTRF), stored as a packed triangular matrix in the same storage format as
A.
- 5: IPIV(N) – INTEGER arrayOutput
On exit: details of the interchanges and the block structure of
D. More precisely,
- if IPIVi=k>0, dii is a 1 by 1 pivot block and the ith row and column of A were interchanged with the kth row and column;
- if UPLO='U' and IPIVi-1=IPIVi=-l<0, di-1,i-1d-i,i-1 d-i,i-1dii is a 2 by 2 pivot block and the i-1th row and column of A were interchanged with the lth row and column;
- if UPLO='L' and IPIVi=IPIVi+1=-m<0, diidi+1,idi+1,idi+1,i+1 is a 2 by 2 pivot block and the i+1th row and column of A were interchanged with the mth row and column.
- 6: B(LDB,*) – COMPLEX (KIND=nag_wp) arrayInput/Output
-
Note: the second dimension of the array
B
must be at least
max1,NRHS.
To solve the equations
Ax=b, where
b is a single right-hand side,
B may be supplied as a one-dimensional array with length
LDB=max1,N.
On entry: the n by r right-hand side matrix B.
On exit: if INFO=0, the n by r solution matrix X.
- 7: LDB – INTEGERInput
On entry: the first dimension of the array
B as declared in the (sub)program from which F07PNF (ZHPSV) is called.
Constraint:
LDB≥max1,N.
- 8: 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 argument had an illegal value. An explanatory message is output, and execution of the program is terminated.
- INFO>0
If INFO=i, dii is exactly zero. The factorization has been completed, but the block diagonal matrix D is exactly singular, so the solution could not be computed.
7 Accuracy
The computed solution for a single right-hand side,
x^
, satisfies an equation of the form
where
and
ε
is the
machine precision. An approximate error bound for the computed solution is given by
where
κA
=
A-11
A1
, the condition number of
A
with respect to the solution of the linear equations. See Section 4.4 of
Anderson et al. (1999) and Chapter 11 of
Higham (2002) for further details.
F07PPF (ZHPSVX) is a comprehensive LAPACK driver that returns forward and backward error bounds and an estimate of the condition number. Alternatively,
F04CJF solves
AX=B
and returns a forward error bound and condition estimate.
F04CJF calls F07PNF (ZHPSV) to solve the equations.
8 Further Comments
The total number of floating point operations is approximately
43 n3
+
8n2r
, where
r
is the number of right-hand sides.
The real analogue of this routine is
F07PAF (DSPSV). The complex symmetric analogue of this routine is
F07QNF (ZSPSV).
9 Example
This example solves the equations
where
A
is the Hermitian matrix
and
Details of the factorization of
A
are also output.
9.1 Program Text
Program Text (f07pnfe.f90)
9.2 Program Data
Program Data (f07pnfe.d)
9.3 Program Results
Program Results (f07pnfe.r)