STZRZF - reduce the M-by-N ( M<=N ) real upper trapezoidal
       matrix A to upper triangular form by means  of  orthogonal
       transformations


SYNOPSIS

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

           INTEGER        INFO, LDA, LWORK, M, N

           REAL           A( LDA, * ), TAU( * ), WORK( * )


PURPOSE

       STZRZF  reduces the M-by-N ( M<=N ) real upper trapezoidal
       matrix A to upper triangular form by means  of  orthogonal
       transformations.   The  upper trapezoidal matrix A is fac­
       tored as

          A = ( R  0 ) * Z,

       where Z is an N-by-N orthogonal 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) REAL 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
               orthogonal  matrix  Z as a product of M elementary
               reflectors.

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

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

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

       LWORK   (input) INTEGER
               The  dimension  of  the  array  WORK.   LWORK   >=

               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