SGET53 checks the generalized eigenvalues computed by SLAG2.
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.
A
A is REAL array, dimension (LDA, 2)
The 2x2 matrix A.
LDA
LDA is INTEGER
The leading dimension of A. It must be at least 2.
B
B is REAL array, dimension (LDB, N)
The 2x2 upper-triangular matrix B.
LDB
LDB is INTEGER
The leading dimension of B. It must be at least 2.
SCALE
SCALE is REAL
The 'scale factor' s in the formula s A - w B . It is
assumed to be non-negative.
WR
WR is REAL
The real part of the eigenvalue w in the formula
s A - w B .
WI
WI is REAL
The imaginary part of the eigenvalue w in the formula
s A - w B .
RESULT
RESULT is REAL
If INFO is 2 or less, the value computed by the test
described above.
If INFO=3, this will just be 1/ulp.
INFO
INFO is 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.