NAG Library Routine Document
F08GEF (DSPTRD)
1 Purpose
F08GEF (DSPTRD) reduces a real symmetric matrix to tridiagonal form, using packed storage.
2 Specification
INTEGER |
N, INFO |
REAL (KIND=nag_wp) |
AP(*), D(N), E(N-1), TAU(N-1) |
CHARACTER(1) |
UPLO |
|
The routine may be called by its
LAPACK
name dsptrd.
3 Description
F08GEF (DSPTRD) reduces a real symmetric matrix A, held in packed storage, to symmetric tridiagonal form T by an orthogonal similarity transformation: A=QTQT.
The matrix
Q is not formed explicitly but is represented as a product of
n-1 elementary reflectors (see the
F08 Chapter Introduction for details). Routines are provided to work with
Q in this representation (see
Section 8).
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: indicates whether the upper or lower triangular part of
A is stored.
- UPLO='U'
- The upper triangular part of A is stored.
- UPLO='L'
- The lower triangular part of A is stored.
Constraint:
UPLO='U' or 'L'.
- 2: N – INTEGERInput
On entry: n, the order of the matrix A.
Constraint:
N≥0.
- 3: AP(*) – REAL (KIND=nag_wp) arrayInput/Output
-
Note: the dimension of the array
AP
must be at least
max1,N×N+1/2.
On entry: the upper or lower triangle of the
n by
n symmetric 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:
AP is overwritten by the tridiagonal matrix
T and details of the orthogonal matrix
Q.
- 4: D(N) – REAL (KIND=nag_wp) arrayOutput
On exit: the diagonal elements of the tridiagonal matrix T.
- 5: E(N-1) – REAL (KIND=nag_wp) arrayOutput
On exit: the off-diagonal elements of the tridiagonal matrix T.
- 6: TAU(N-1) – REAL (KIND=nag_wp) arrayOutput
On exit: further details of the orthogonal matrix Q.
- 7: 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, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.
7 Accuracy
The computed tridiagonal matrix
T is exactly similar to a nearby matrix
A+E, where
cn is a modestly increasing function of
n, and
ε is the
machine precision.
The elements of T themselves may be sensitive to small perturbations in A or to rounding errors in the computation, but this does not affect the stability of the eigenvalues and eigenvectors.
8 Further Comments
The total number of floating point operations is approximately
43
n3
.
To form the orthogonal matrix
Q F08GEF (DSPTRD) may be followed by a call to
F08GFF (DOPGTR):
CALL DOPGTR(UPLO,N,AP,TAU,Q,LDQ,WORK,INFO)
To apply
Q to an
n by
p real matrix
C F08GEF (DSPTRD) may be followed by a call to
F08GGF (DOPMTR). For example,
CALL DOPMTR('Left',UPLO,'No Transpose',N,P,AP,TAU,C,LDC,WORK, &
INFO)
forms the matrix product
QC.
The complex analogue of this routine is
F08GSF (ZHPTRD).
9 Example
This example reduces the matrix
A to tridiagonal form, where
using packed storage.
9.1 Program Text
Program Text (f08gefe.f90)
9.2 Program Data
Program Data (f08gefe.d)
9.3 Program Results
Program Results (f08gefe.r)