DLAQTR - solve the real quasi-triangular system  op(T)*p =
       scale*c, if LREAL = .TRUE


SYNOPSIS

       SUBROUTINE DLAQTR( LTRAN, LREAL, N, T, LDT, B,  W,  SCALE,
                          X, WORK, INFO )

           LOGICAL        LREAL, LTRAN

           INTEGER        INFO, LDT, N

           DOUBLE         PRECISION SCALE, W

           DOUBLE         PRECISION  B( * ), T( LDT, * ), WORK( *
                          ), X( * )


PURPOSE

       DLAQTR solves the real quasi-triangular system  op(T)*p  =
       scale*c,  if LREAL = .TRUE.  or the complex quasi-triangu­
       lar systems

                  op(T + iB)*(p+iq) = scale*(c+id),  if  LREAL  =
       .FALSE.

       in real arithmetic, where T is upper quasi-triangular.
       If  LREAL  =  .FALSE.,  then the first diagonal block of T
       must be 1 by 1, B is the specially structured matrix

                      B = [ b(1) b(2) ... b(n) ]
                          [       w            ]
                          [           w        ]
                          [              .     ]
                          [                 w  ]

       op(A) = A or A', A' denotes the conjugate transpose of
       matrix A.

       On input, X = [ c ].  On output, X = [ p ].
                     [ d ]                  [ q ]

       This subroutine is designed for the condition number esti­
       mation in routine DTRSNA.


ARGUMENTS

       LTRAN   (input) LOGICAL
               On  entry, LTRAN specifies the option of conjugate
               transpose: =  .FALSE.,     op(T+i*B)  =  T+i*B,  =
               .TRUE.,     op(T+i*B) = (T+i*B)'.

       LREAL   (input) LOGICAL
               On  entry, LREAL specifies the input matrix struc­
               ture: = .FALSE.,    the input is complex = .TRUE.,


       N       (input) INTEGER
               On  entry, N specifies the order of T+i*B. N >= 0.

       T       (input) DOUBLE PRECISION array, dimension (LDT,N)
               On entry, T contains a matrix in  Schur  canonical
               form.  If LREAL = .FALSE., then the first diagonal
               block of T mu be 1 by 1.

       LDT     (input) INTEGER
               The leading dimension of  the  matrix  T.  LDT  >=
               max(1,N).

       B       (input) DOUBLE PRECISION array, dimension (N)
               On  entry,  B  contains  the  elements to form the
               matrix B as described above.  If LREAL = .TRUE., B
               is not referenced.

       W       (input) DOUBLE PRECISION
               On  entry, W is the diagonal element of the matrix
               B.  If LREAL = .TRUE., W is not referenced.

       SCALE   (output) DOUBLE PRECISION
               On exit, SCALE is the scale factor.

       X       (input/output) DOUBLE PRECISION array, dimension
               (2*N)
               On  entry,  X  contains the right hand side of the
               system.  On exit, X is overwritten  by  the  solu­
               tion.

       WORK    (workspace) DOUBLE PRECISION array, dimension (N)

       INFO    (output) INTEGER
               On exit, INFO is set to 0: successful exit.
               1:  the  some  diagonal 1 by 1 block has been per­
               turbed by a small number SMIN to keep nonsingular­
               ity.   2:  the some diagonal 2 by 2 block has been
               perturbed by a small number in DLALN2 to keep non­
               singularity.   NOTE:  In  the  interests of speed,
               this routine does not check the inputs for errors.


Man(1) output converted with man2html