Subroutine */
| 33211 | } /* sorg2r_ */ |
| 33212 | |
| 33213 | /* Subroutine */ int sorgbr_(char *vect, integer *m, integer *n, integer *k, |
| 33214 | real *a, integer *lda, real *tau, real *work, integer *lwork, integer |
| 33215 | *info) |
| 33216 | { |
| 33217 | /* System generated locals */ |
| 33218 | integer a_dim1, a_offset, i__1, i__2, i__3; |
| 33219 | |
| 33220 | /* Local variables */ |
| 33221 | static integer i__, j, nb, mn; |
| 33222 | extern logical lsame_(char *, char *); |
| 33223 | static integer iinfo; |
| 33224 | static logical wantq; |
| 33225 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 33226 | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| 33227 | integer *, integer *, ftnlen, ftnlen); |
| 33228 | extern /* Subroutine */ int sorglq_(integer *, integer *, integer *, real |
| 33229 | *, integer *, real *, real *, integer *, integer *), sorgqr_( |
| 33230 | integer *, integer *, integer *, real *, integer *, real *, real * |
| 33231 | , integer *, integer *); |
| 33232 | static integer lwkopt; |
| 33233 | static logical lquery; |
| 33234 | |
| 33235 | |
| 33236 | /* |
| 33237 | -- LAPACK routine (version 3.2) -- |
| 33238 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 33239 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 33240 | November 2006 |
| 33241 | |
| 33242 | |
| 33243 | Purpose |
| 33244 | ======= |
| 33245 | |
| 33246 | SORGBR generates one of the real orthogonal matrices Q or P**T |
| 33247 | determined by SGEBRD when reducing a real matrix A to bidiagonal |
| 33248 | form: A = Q * B * P**T. Q and P**T are defined as products of |
| 33249 | elementary reflectors H(i) or G(i) respectively. |
| 33250 | |
| 33251 | If VECT = 'Q', A is assumed to have been an M-by-K matrix, and Q |
| 33252 | is of order M: |
| 33253 | if m >= k, Q = H(1) H(2) . . . H(k) and SORGBR returns the first n |
| 33254 | columns of Q, where m >= n >= k; |
| 33255 | if m < k, Q = H(1) H(2) . . . H(m-1) and SORGBR returns Q as an |
| 33256 | M-by-M matrix. |
| 33257 | |
| 33258 | If VECT = 'P', A is assumed to have been a K-by-N matrix, and P**T |
| 33259 | is of order N: |
| 33260 | if k < n, P**T = G(k) . . . G(2) G(1) and SORGBR returns the first m |
| 33261 | rows of P**T, where n >= m >= k; |
| 33262 | if k >= n, P**T = G(n-1) . . . G(2) G(1) and SORGBR returns P**T as |
| 33263 | an N-by-N matrix. |
| 33264 | |
| 33265 | Arguments |
| 33266 | ========= |
| 33267 | |
| 33268 | VECT (input) CHARACTER*1 |
| 33269 | Specifies whether the matrix Q or the matrix P**T is |
| 33270 | required, as defined in the transformation applied by SGEBRD: |