Contents


NAME

     zungqr - generate an M-by-N complex matrix Q with  orthonor-
     mal columns,

SYNOPSIS

     SUBROUTINE ZUNGQR(M, N, K, A, LDA, TAU, WORKIN, LWORKIN, INFO)

     DOUBLE COMPLEX A(LDA,*), TAU(*), WORKIN(*)
     INTEGER M, N, K, LDA, LWORKIN, INFO

     SUBROUTINE ZUNGQR_64(M, N, K, A, LDA, TAU, WORKIN, LWORKIN, INFO)

     DOUBLE COMPLEX A(LDA,*), TAU(*), WORKIN(*)
     INTEGER*8 M, N, K, LDA, LWORKIN, INFO

  F95 INTERFACE
     SUBROUTINE UNGQR(M, [N], [K], A, [LDA], TAU, [WORKIN], [LWORKIN],
            [INFO])

     COMPLEX(8), DIMENSION(:) :: TAU, WORKIN
     COMPLEX(8), DIMENSION(:,:) :: A
     INTEGER :: M, N, K, LDA, LWORKIN, INFO

     SUBROUTINE UNGQR_64(M, [N], [K], A, [LDA], TAU, [WORKIN], [LWORKIN],
            [INFO])

     COMPLEX(8), DIMENSION(:) :: TAU, WORKIN
     COMPLEX(8), DIMENSION(:,:) :: A
     INTEGER(8) :: M, N, K, LDA, LWORKIN, INFO

  C INTERFACE
     #include <sunperf.h>

     void zungqr(int m, int n, int k, doublecomplex *a, int  lda,
               doublecomplex *tau, int *info);

     void zungqr_64(long m, long n,  long  k,  doublecomplex  *a,
               long lda, doublecomplex *tau, long *info);

PURPOSE

     zungqr generates an M-by-N complex matrix Q with orthonormal
     columns,  which  is defined as the first N columns of a pro-
     duct of K elementary reflectors of order M

           Q  =  H(1) H(2) . . . H(k)
     as returned by CGEQRF.

ARGUMENTS

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

     N (input) The number of columns of the matrix Q. M >=  N  >=
               0.

     K (input) The number of elementary reflectors whose  product
               defines the matrix Q. N >= K >= 0.

     A (input/output)
               On entry, the i-th column must contain the  vector
               which defines the elementary reflector H(i), for i
               = 1,2,...,k, as returned by CGEQRF in the first  k
               columns  of its array argument A.  On exit, the M-
               by-N matrix Q.

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

     TAU (input)
               TAU(i) must contain the scalar factor of the  ele-
               mentary reflector H(i), as returned by CGEQRF.

     WORKIN (workspace)
               On exit,  if  INFO  =  0,  WORKIN(1)  returns  the
               optimal LWORKIN.

     LWORKIN (input)
               The dimension of  the  array  WORKIN.  LWORKIN  >=
               max(1,N).   For  optimum  performance  LWORKIN  >=
               N*NB, where NB is the optimal blocksize.

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

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