Previous: dlaexc Up: ../lapack-d.html Next: dlags2


dlag2


 NAME
      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 eigen-
      value 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 entry of B (in abso-
              lute 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') -- it
              is an argument in order to avoid having to 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 threshold 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 threshold 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) entry 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.