SLALN2  - solve a system of the form (ca A - w D ) X = s B
       or (ca A' - w D) X = s B with possible scaling  ("s")  and
       perturbation of A


SYNOPSIS

       SUBROUTINE SLALN2( LTRANS,  NA,  NW, SMIN, CA, A, LDA, D1,
                          D2, B, LDB,  WR,  WI,  X,  LDX,  SCALE,
                          XNORM, INFO )

           LOGICAL        LTRANS

           INTEGER        INFO, LDA, LDB, LDX, NA, NW

           REAL           CA, D1, D2, SCALE, SMIN, WI, WR, XNORM

           REAL           A( LDA, * ), B( LDB, * ), X( LDX, * )


PURPOSE

       SLALN2  solves  a system of the form (ca A - w D ) X = s B
       or (ca A' - w D) X = s B with possible scaling  ("s")  and
       perturbation  of  A. (A' means A-transpose.)  A is an NA x
       NA real matrix, ca is a real scalar, D is an NA x NA  real
       diagonal matrix, w is a real or complex value, and X and B
       are NA x 1 matrices -- real if w is real, complex if w  is
       complex.  NA may be 1 or 2.

       If  w is complex, X and B are represented as NA x 2 matri­
       ces, the first column of each being the real part and  the
       second being the imaginary part.

       "s"  is  a  scaling  factor  (.LE. 1), computed by SLALN2,
       which is so chosen that X can be  computed  without  over­
       flow.   X  is  further  scaled if necessary to assure that
       norm(ca A - w D)*norm(X) is less than overflow.

       If both singular values of (ca A -  w  D)  are  less  than
       SMIN,  SMIN*identity will be used instead of (ca A - w D).
       If only one singular value is less than SMIN, one  element
       of  (ca  A  -  w  D)  will be perturbed enough to make the
       smallest singular value roughly SMIN.   If  both  singular
       values  are  at  least SMIN, (ca A - w D) will not be per­
       turbed.  In any case, the perturbation  will  be  at  most
       some  small multiple of max( SMIN, ulp*norm(ca A - w D) ).
       The singular values are computed by infinity-norm approxi­
       mations, and thus will only be correct to a factor of 2 or
       so.

       Note: all input quantities are assumed to be smaller  than
       overflow by a reasonable factor.  (See BIGNUM.)


ARGUMENTS


               =.TRUE.:  A-transpose will be used.
               =.FALSE.: A will be used (not transposed.)

       NA      (input) INTEGER
               The  size  of the matrix A.  It may (only) be 1 or
               2.

       NW      (input) INTEGER
               1 if "w" is real, 2 if "w"  is  complex.   It  may
               only be 1 or 2.

       SMIN    (input) REAL
               The  desired lower bound on the singular values of
               A.  This should  be  a  safe  distance  away  from
               underflow   or   overflow,  say,  between  (under­
               flow/machine precision) and  (machine precision  *
               overflow ).  (See BIGNUM and ULP.)

       CA      (input) REAL
               The coefficient c, which A is multiplied by.

       A       (input) REAL array, dimension (LDA,NA)
               The NA x NA matrix A.

       LDA     (input) INTEGER
               The  leading  dimension of A.  It must be at least
               NA.

       D1      (input) REAL
               The 1,1 element in the diagonal matrix D.

       D2      (input) REAL
               The 2,2 element in the  diagonal  matrix  D.   Not
               used if NW=1.

       B       (input) REAL array, dimension (LDB,NW)
               The  NA  x NW matrix B (right-hand side).  If NW=2
               ("w" is complex), column 1 contains the real  part
               of B and column 2 contains the imaginary part.

       LDB     (input) INTEGER
               The  leading  dimension of B.  It must be at least
               NA.

       WR      (input) REAL
               The real part of the scalar "w".

       WI      (input) REAL
               The imaginary part of the scalar "w".  Not used if
               NW=1.

       X       (output) REAL array, dimension (LDX,NW)
               The  NA  x  NW matrix X (unknowns), as computed by

               1  will  contain  the  real part of X and column 2
               will contain the imaginary part.

       LDX     (input) INTEGER
               The leading dimension of X.  It must be  at  least
               NA.

       SCALE   (output) REAL
               The  scale  factor that B must be multiplied by to
               insure that overflow does not occur when computing
               X.   Thus,  (ca A - w D) X  will be SCALE*B, not B
               (ignoring perturbations of A.)  It will be at most
               1.

       XNORM   (output) REAL
               The  infinity-norm  of X, when X is regarded as an
               NA x NW real matrix.

       INFO    (output) INTEGER
               An error flag.  It will be set to zero if no error
               occurs,  a  negative  number  if an argument is in
               error, or a positive number if  ca A - w D  had to
               be perturbed.  The possible values are:
               =  0:  No error occurred, and (ca A - w D) did not
               have to be perturbed.  = 1: (ca A - w D) had to be
               perturbed  to make its smallest (or only) singular
               value greater than SMIN.  NOTE: In  the  interests
               of  speed,  this routine does not check the inputs
               for errors.


Man(1) output converted with man2html