====================================================================
dlaqtr examples
====================================================================

====================================================================
Man Page Details
====================================================================

NAME
       DLAQTR - 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-triangular 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 estimation
  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 structure:
             = .FALSE.,    the input is complex
             = .TRUE.,     the input is real

  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 solution.

  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 perturbed by
                  a small number SMIN to keep nonsingularity.
               2: the some diagonal 2 by 2 block has been perturbed by
                  a small number in DLALN2 to keep nonsingularity.
          NOTE: In the interests of speed, this routine does not
                check the inputs for errors.

