DGET53

   Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd..
   November 2006

Purpose

DGET53  checks the generalized eigenvalues computed by DLAG2.

The basic test for an eigenvalue is:

                             | det( s A - w B ) |
    RESULT =  ---------------------------------------------------
              ulp max( s norm(A), |w| norm(B) )*norm( s A - w B )

Two "safety checks" are performed:

(1)  ulp*max( s*norm(A), |w|*norm(B) )  must be at least
     safe_minimum.  This insures that the test performed is
     not essentially  det(0*A + 0*B)=0.

(2)  s*norm(A) + |w|*norm(B) must be less than 1/safe_minimum.
     This insures that  s*A - w*B  will not overflow.

If these tests are not passed, then  s  and  w  are scaled and
tested anyway, if this is possible.

Arguments

A
(input) DOUBLE PRECISION array, dimension (LDA, 2)
The 2x2 matrix A.
LDA
(input) INTEGER
The leading dimension of A.  It must be at least 2.
B
(input) DOUBLE PRECISION array, dimension (LDB, N)
The 2x2 upper-triangular matrix B.
LDB
(input) INTEGER
The leading dimension of B.  It must be at least 2.
SCALE
(input) DOUBLE PRECISION
The "scale factor" s in the formula  s A - w B .  It is
assumed to be non-negative.
WR
(input) DOUBLE PRECISION
The real part of the eigenvalue  w  in the formula
s A - w B .
WI
(input) DOUBLE PRECISION
The imaginary part of the eigenvalue  w  in the formula
s A - w B .
RESULT
(output) DOUBLE PRECISION
If INFO is 2 or less, the value computed by the test
   described above.
If INFO=3, this will just be 1/ulp.
INFO
(output) INTEGER
=0:  The input data pass the "safety checks".
=1:  s*norm(A) + |w|*norm(B) > 1/safe_minimum.
=2:  ulp*max( s*norm(A), |w|*norm(B) ) < safe_minimum
=3:  same as INFO=2, but  s  and  w  could not be scaled so
     as to compute the test.

Call Graph

Caller Graph