NAG FL Interface
f08jff (dsterf)

Settings help

FL Name Style:


FL Specification Language:


1 Purpose

f08jff computes all the eigenvalues of a real symmetric tridiagonal matrix.

2 Specification

Fortran Interface
Subroutine f08jff ( n, d, e, info)
Integer, Intent (In) :: n
Integer, Intent (Out) :: info
Real (Kind=nag_wp), Intent (Inout) :: d(*), e(*)
C Header Interface
#include <nag.h>
void  f08jff_ (const Integer *n, double d[], double e[], Integer *info)
The routine may be called by the names f08jff, nagf_lapackeig_dsterf or its LAPACK name dsterf.

3 Description

f08jff computes all the eigenvalues of a real symmetric tridiagonal matrix, using a square-root-free variant of the QR algorithm.
The routine uses an explicit shift, and, like f08jef, switches between the QR and QL variants in order to handle graded matrices effectively (see Greenbaum and Dongarra (1980)).

4 References

Greenbaum A and Dongarra J J (1980) Experiments with QR/QL methods for the symmetric triangular eigenproblem LAPACK Working Note No. 17 (Technical Report CS-89-92) University of Tennessee, Knoxville https://www.netlib.org/lapack/lawnspdf/lawn17.pdf
Parlett B N (1998) The Symmetric Eigenvalue Problem SIAM, Philadelphia

5 Arguments

1: n Integer Input
On entry: n, the order of the matrix T.
Constraint: n0.
2: d(*) Real (Kind=nag_wp) array Input/Output
Note: the dimension of the array d must be at least max(1,n).
On entry: the diagonal elements of the tridiagonal matrix T.
On exit: the n eigenvalues in ascending order, unless info>0 (in which case see Section 6).
3: e(*) Real (Kind=nag_wp) array Input/Output
Note: the dimension of the array e must be at least max(1,n-1).
On entry: the off-diagonal elements of the tridiagonal matrix T.
On exit: e is overwritten.
4: info Integer Output
On exit: info=0 unless the routine detects an error (see Section 6).

6 Error Indicators and Warnings

info<0
If info=-i, argument i had an illegal value. An explanatory message is output, and execution of the program is terminated.
info>0
The algorithm has failed to find all the eigenvalues after a total of 30×n iterations; value elements of e have not converged to zero.

7 Accuracy

The computed eigenvalues are exact for a nearby matrix (T+E), where
E2 = O(ε) T2 ,  
and ε is the machine precision.
If λi is an exact eigenvalue and λ~i is the corresponding computed value, then
|λ~i-λi| c (n) ε T2 ,  
where c(n) is a modestly increasing function of n.

8 Parallelism and Performance

Background information to multithreading can be found in the Multithreading documentation.
f08jff is not threaded in any implementation.

9 Further Comments

The total number of floating-point operations is typically about 14n2, but depends on how rapidly the algorithm converges. The operations are all performed in scalar mode.
There is no complex analogue of this routine.

10 Example

This example computes all the eigenvalues of the symmetric tridiagonal matrix T, where
T = ( -6.99 -0.44 0.00 0.00 -0.44 7.92 -2.63 0.00 0.00 -2.63 2.34 -1.18 0.00 0.00 -1.18 0.32 ) .  

10.1 Program Text

Program Text (f08jffe.f90)

10.2 Program Data

Program Data (f08jffe.d)

10.3 Program Results

Program Results (f08jffe.r)