NAME

dorgbr - generate one of the real orthogonal matrices Q or P**T determined by SGEBRD when reducing a real matrix A to bidiagonal form


SYNOPSIS

  SUBROUTINE DORGBR( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
  CHARACTER * 1 VECT
  INTEGER M, N, K, LDA, LWORK, INFO
  DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)
  SUBROUTINE DORGBR_64( VECT, M, N, K, A, LDA, TAU, WORK, LWORK, INFO)
  CHARACTER * 1 VECT
  INTEGER*8 M, N, K, LDA, LWORK, INFO
  DOUBLE PRECISION A(LDA,*), TAU(*), WORK(*)

F95 INTERFACE

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

C INTERFACE

#include <sunperf.h>

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

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


PURPOSE

dorgbr generates one of the real orthogonal matrices Q or P**T determined by SGEBRD when reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and P**T 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 SORGBR returns the first n columns of Q, where m >= n >= k;

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

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

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

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


ARGUMENTS