Subroutine */
| 33337 | } /* dorg2r_ */ |
| 33338 | |
| 33339 | /* Subroutine */ int dorgbr_(char *vect, integer *m, integer *n, integer *k, |
| 33340 | doublereal *a, integer *lda, doublereal *tau, doublereal *work, |
| 33341 | integer *lwork, integer *info) |
| 33342 | { |
| 33343 | /* System generated locals */ |
| 33344 | integer a_dim1, a_offset, i__1, i__2, i__3; |
| 33345 | |
| 33346 | /* Local variables */ |
| 33347 | static integer i__, j, nb, mn; |
| 33348 | extern logical lsame_(char *, char *); |
| 33349 | static integer iinfo; |
| 33350 | static logical wantq; |
| 33351 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 33352 | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| 33353 | integer *, integer *, ftnlen, ftnlen); |
| 33354 | extern /* Subroutine */ int dorglq_(integer *, integer *, integer *, |
| 33355 | doublereal *, integer *, doublereal *, doublereal *, integer *, |
| 33356 | integer *), dorgqr_(integer *, integer *, integer *, doublereal *, |
| 33357 | integer *, doublereal *, doublereal *, integer *, integer *); |
| 33358 | static integer lwkopt; |
| 33359 | static logical lquery; |
| 33360 | |
| 33361 | |
| 33362 | /* |
| 33363 | -- LAPACK routine (version 3.2) -- |
| 33364 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 33365 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 33366 | November 2006 |
| 33367 | |
| 33368 | |
| 33369 | Purpose |
| 33370 | ======= |
| 33371 | |
| 33372 | DORGBR generates one of the real orthogonal matrices Q or P**T |
| 33373 | determined by DGEBRD when reducing a real matrix A to bidiagonal |
| 33374 | form: A = Q * B * P**T. Q and P**T are defined as products of |
| 33375 | elementary reflectors H(i) or G(i) respectively. |
| 33376 | |
| 33377 | If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q |
| 33378 | is of order M: |
| 33379 | if m >= k, Q = H(1) H(2) . . . H(k) and DORGBR returns the first n |
| 33380 | columns of Q, where m >= n >= k; |
| 33381 | if m < k, Q = H(1) H(2) . . . H(m-1) and DORGBR returns Q as an |
| 33382 | M-by-M matrix. |
| 33383 | |
| 33384 | If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**T |
| 33385 | is of order N: |
| 33386 | if k < n, P**T = G(k) . . . G(2) G(1) and DORGBR returns the first m |
| 33387 | rows of P**T, where n >= m >= k; |
| 33388 | if k >= n, P**T = G(n-1) . . . G(2) G(1) and DORGBR returns P**T as |
| 33389 | an N-by-N matrix. |
| 33390 | |
| 33391 | Arguments |
| 33392 | ========= |
| 33393 | |
| 33394 | VECT (input) CHARACTER*1 |
| 33395 | Specifies whether the matrix Q or the matrix P**T is |
| 33396 | required, as defined in the transformation applied by DGEBRD: |