ZTZRZF  -  reduce the M-by-N ( M<=N ) complex upper trape­
       zoidal matrix A to upper triangular form by means of  uni­
       tary transformations


SYNOPSIS

       SUBROUTINE ZTZRZF( M, N, A, LDA, TAU, WORK, LWORK, INFO )

           INTEGER        INFO, LDA, LWORK, M, N

           COMPLEX*16     A( LDA, * ), TAU( * ), WORK( * )


PURPOSE

       ZTZRZF  reduces  the  M-by-N ( M<=N ) complex upper trape­
       zoidal matrix A to upper triangular form by means of  uni­
       tary  transformations.   The upper trapezoidal matrix A is
       factored as

          A = ( R  0 ) * Z,

       where Z is an N-by-N unitary matrix and  R  is  an  M-by-M
       upper triangular matrix.


ARGUMENTS

       M       (input) INTEGER
               The number of rows of the matrix A.  M >= 0.

       N       (input) INTEGER
               The number of columns of the matrix A.  N >= 0.

       A       (input/output) COMPLEX*16 array, dimension (LDA,N)
               On entry, the  leading  M-by-N  upper  trapezoidal
               part  of the array A must contain the matrix to be
               factorized.  On exit,  the  leading  M-by-M  upper
               triangular part of A contains the upper triangular
               matrix R, and elements M+1 to N  of  the  first  M
               rows  of A, with the array TAU, represent the uni­
               tary matrix Z as a product of M elementary reflec­
               tors.

       LDA     (input) INTEGER
               The  leading  dimension  of  the  array A.  LDA >=
               max(1,M).

       TAU     (output) COMPLEX*16 array, dimension (M)
               The scalar factors of the elementary reflectors.

       WORK    (workspace/output) COMPLEX*16 array, dimension
               (LWORK)
               On  exit, if INFO = 0, WORK(1) returns the optimal
               LWORK.

               The  dimension  of  the  array  WORK.   LWORK   >=
               max(1,M).   For optimum performance LWORK >= M*NB,
               where NB is the optimal blocksize.

               If LWORK = -1, then a workspace query is  assumed;
               the  routine  only  calculates the optimal size of
               the WORK array, returns this value  as  the  first
               entry  of  the  WORK  array,  and no error message
               related to LWORK is issued by XERBLA.

       INFO    (output) INTEGER
               = 0:  successful exit
               < 0:  if INFO = -i, the i-th argument had an ille­
               gal value


FURTHER DETAILS

       Based on contributions by
         A.  Petitet,  Computer  Science  Dept.,  Univ. of Tenn.,
       Knoxville, USA

       The factorization is  obtained  by  Householder's  method.
       The  kth  transformation  matrix, Z( k ), which is used to
       introduce zeros into the ( m - k + 1  )th  row  of  A,  is
       given in the form

          Z( k ) = ( I     0   ),
                   ( 0  T( k ) )

       where

          T( k ) = I - tau*u( k )*u( k )',   u( k ) = (   1    ),
                                                      (   0    )
                                                      ( z( k ) )

       tau is a scalar and z( k ) is an ( n - m ) element vector.
       tau  and  z(  k ) are chosen to annihilate the elements of
       the kth row of X.

       The scalar tau is returned in the kth element of  TAU  and
       the  vector u( k ) in the kth row of A, such that the ele­
       ments of z( k ) are in  a( k, m + 1 ), ..., a( k, n ). The
       elements of R are returned in the upper triangular part of
       A.

       Z is given by

          Z =  Z( 1 ) * Z( 2 ) * ... * Z( m ).


Man(1) output converted with man2html