NAG CL Interface
f08jfc (dsterf)

Settings help

CL Name Style:


1 Purpose

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

2 Specification

#include <nag.h>
void  f08jfc (Integer n, double d[], double e[], NagError *fail)
The function may be called by the names: f08jfc, nag_lapackeig_dsterf or nag_dsterf.

3 Description

f08jfc computes all the eigenvalues of a real symmetric tridiagonal matrix, using a square-root-free variant of the QR algorithm.
The function uses an explicit shift, and, like f08jec, 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[dim] double Input/Output
Note: the dimension, dim, 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 fail.code= NE_CONVERGENCE (in which case see Section 6).
3: e[dim] double Input/Output
Note: the dimension, dim, 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: fail NagError * Input/Output
The NAG error argument (see Section 7 in the Introduction to the NAG Library CL Interface).

6 Error Indicators and Warnings

NE_ALLOC_FAIL
Dynamic memory allocation failed.
See Section 3.1.2 in the Introduction to the NAG Library CL Interface for further information.
NE_BAD_PARAM
On entry, argument value had an illegal value.
NE_CONVERGENCE
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.
NE_INT
On entry, n=value.
Constraint: n0.
NE_INTERNAL_ERROR
An internal error has occurred in this function. Check the function call and any array sizes. If the call is correct then please contact NAG for assistance.
See Section 7.5 in the Introduction to the NAG Library CL Interface for further information.
NE_NO_LICENCE
Your licence key may have expired or may not have been installed correctly.
See Section 8 in the Introduction to the NAG Library CL Interface for further information.

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.
f08jfc 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 function.

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 (f08jfce.c)

10.2 Program Data

Program Data (f08jfce.d)

10.3 Program Results

Program Results (f08jfce.r)