DLAG2  -  compute  the  eigenvalues of a 2 x 2 generalized
       eigenvalue problem A - w B, with scaling as  necessary  to
       avoid over-/underflow


SYNOPSIS

       SUBROUTINE DLAG2( A,  LDA, B, LDB, SAFMIN, SCALE1, SCALE2,
                         WR1, WR2, WI )

           INTEGER       LDA, LDB

           DOUBLE        PRECISION SAFMIN,  SCALE1,  SCALE2,  WI,
                         WR1, WR2

           DOUBLE        PRECISION A( LDA, * ), B( LDB, * )


PURPOSE

       DLAG2  computes  the  eigenvalues  of  a 2 x 2 generalized
       eigenvalue problem A - w B, with scaling as  necessary  to
       avoid  over-/underflow.  The scaling factor "s" results in
       a modified eigenvalue equation

           s A - w B

       where  s  is a non-negative scaling factor chosen so  that
       w,   w  B,  and  s A  do not overflow and, if possible, do
       not underflow, either.


ARGUMENTS

       A       (input) DOUBLE PRECISION array, dimension (LDA, 2)
               On  entry, the 2 x 2 matrix A.  It is assumed that
               its 1-norm is less than  1/SAFMIN.   Entries  less
               than  sqrt(SAFMIN)*norm(A)  are  subject  to being
               treated as zero.

       LDA     (input) INTEGER
               The leading dimension of the array A.  LDA >= 2.

       B       (input) DOUBLE PRECISION array, dimension (LDB, 2)
               On entry, the 2 x 2 upper triangular matrix B.  It
               is assumed that the one-norm of  B  is  less  than
               1/SAFMIN.    The  diagonals  should  be  at  least
               sqrt(SAFMIN) times the largest element  of  B  (in
               absolute  value);  if  a  diagonal is smaller than
               that, then  +/- sqrt(SAFMIN) will be used  instead
               of that diagonal.

       LDB     (input) INTEGER
               The leading dimension of the array B.  LDB >= 2.

       SAFMIN  (input) DOUBLE PRECISION
               The  smallest  positive  number s.t. 1/SAFMIN does
               not overflow.  (This should always be  DLAMCH('S')

               call DLAMCH frequently.)

       SCALE1  (output) DOUBLE PRECISION
               A scaling factor used to avoid over-/underflow  in
               the  eigenvalue  equation  which defines the first
               eigenvalue.  If the eigenvalues are complex,  then
               the  eigenvalues  are  ( WR1  +/-  WI i ) / SCALE1
               (which may lie outside the exponent range  of  the
               machine), SCALE1=SCALE2, and SCALE1 will always be
               positive.  If the eigenvalues are real,  then  the
               first  (real)  eigenvalue  is   WR1 / SCALE1 , but
               this may  overflow  or  underflow,  and  in  fact,
               SCALE1  may  be  zero  or  less than the underflow
               threshhold if the exact eigenvalue is sufficiently
               large.

       SCALE2  (output) DOUBLE PRECISION
               A  scaling factor used to avoid over-/underflow in
               the eigenvalue equation which defines  the  second
               eigenvalue.   If the eigenvalues are complex, then
               SCALE2=SCALE1.  If the eigenvalues are real,  then
               the second (real) eigenvalue is WR2 / SCALE2 , but
               this may  overflow  or  underflow,  and  in  fact,
               SCALE2  may  be  zero  or  less than the underflow
               threshhold if the exact eigenvalue is sufficiently
               large.

       WR1     (output) DOUBLE PRECISION
               If  the  eigenvalue  is  real,  then WR1 is SCALE1
               times the eigenvalue closest to the (2,2)  element
               of  A B**(-1).  If the eigenvalue is complex, then
               WR1=WR2 is SCALE1  times  the  real  part  of  the
               eigenvalues.

       WR2     (output) DOUBLE PRECISION
               If  the  eigenvalue  is  real,  then WR2 is SCALE2
               times the other eigenvalue.  If the eigenvalue  is
               complex,  then  WR1=WR2  is  SCALE1 times the real
               part of the eigenvalues.

       WI      (output) DOUBLE PRECISION
               If the eigenvalue is real, then WI  is  zero.   If
               the eigenvalue is complex, then WI is SCALE1 times
               the imaginary part of the  eigenvalues.   WI  will
               always be non-negative.


Man(1) output converted with man2html