NAME

zungbr - generate one of the complex unitary matrices Q or P**H determined by CGEBRD when reducing a complex matrix A to bidiagonal form


SYNOPSIS

  SUBROUTINE ZUNGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
  CHARACTER * 1 VECT
  DOUBLE COMPLEX A(LDA,*), TAU(*), WORK(*)
  INTEGER M, N, K, LDA, LWORK, INFO
  SUBROUTINE ZUNGBR_64( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
  CHARACTER * 1 VECT
  DOUBLE COMPLEX A(LDA,*), TAU(*), WORK(*)
  INTEGER*8 M, N, K, LDA, LWORK, INFO

F95 INTERFACE

  SUBROUTINE UNGBR( VECT, M, [N], K, A, [LDA], TAU, [WORK], [LWORK], 
 *       [INFO])
  CHARACTER(LEN=1) :: VECT
  COMPLEX(8), DIMENSION(:) :: TAU, WORK
  COMPLEX(8), DIMENSION(:,:) :: A
  INTEGER :: M, N, K, LDA, LWORK, INFO
  SUBROUTINE UNGBR_64( VECT, M, [N], K, A, [LDA], TAU, [WORK], [LWORK], 
 *       [INFO])
  CHARACTER(LEN=1) :: VECT
  COMPLEX(8), DIMENSION(:) :: TAU, WORK
  COMPLEX(8), DIMENSION(:,:) :: A
  INTEGER(8) :: M, N, K, LDA, LWORK, INFO

C INTERFACE

#include <sunperf.h>

void zungbr(char vect, int m, int n, int k, doublecomplex *a, int lda, doublecomplex *tau, int *info);

void zungbr_64(char vect, long m, long n, long k, doublecomplex *a, long lda, doublecomplex *tau, long *info);


PURPOSE

zungbr generates one of the complex unitary matrices Q or P**H determined by CGEBRD when reducing a complex matrix A to bidiagonal form: A = Q * B * P**H. Q and P**H are defined as products of elementary reflectors H(i) or G(i) respectively.

If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q is of order M:

if m >= k, Q = H(1) H(2) . . . H(k) and CUNGBR returns the first n columns of Q, where m >= n >= k;

if m < k, Q = H(1) H(2) . . . H(m-1) and CUNGBR returns Q as an M-by-M matrix.

If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**H is of order N:

if k < n, P**H = G(k) . . . G(2) G(1) and CUNGBR returns the first m rows of P**H, where n >= m >= k;

if k >= n, P**H = G(n-1) . . . G(2) G(1) and CUNGBR returns P**H as an N-by-N matrix.


ARGUMENTS