Subroutine */
| 36400 | } /* sormqr_ */ |
| 36401 | |
| 36402 | /* Subroutine */ int sormtr_(char *side, char *uplo, char *trans, integer *m, |
| 36403 | integer *n, real *a, integer *lda, real *tau, real *c__, integer *ldc, |
| 36404 | real *work, integer *lwork, integer *info) |
| 36405 | { |
| 36406 | /* System generated locals */ |
| 36407 | address a__1[2]; |
| 36408 | integer a_dim1, a_offset, c_dim1, c_offset, i__1[2], i__2, i__3; |
| 36409 | char ch__1[2]; |
| 36410 | |
| 36411 | /* Local variables */ |
| 36412 | static integer i1, i2, nb, mi, ni, nq, nw; |
| 36413 | static logical left; |
| 36414 | extern logical lsame_(char *, char *); |
| 36415 | static integer iinfo; |
| 36416 | static logical upper; |
| 36417 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 36418 | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| 36419 | integer *, integer *, ftnlen, ftnlen); |
| 36420 | extern /* Subroutine */ int sormql_(char *, char *, integer *, integer *, |
| 36421 | integer *, real *, integer *, real *, real *, integer *, real *, |
| 36422 | integer *, integer *); |
| 36423 | static integer lwkopt; |
| 36424 | static logical lquery; |
| 36425 | extern /* Subroutine */ int sormqr_(char *, char *, integer *, integer *, |
| 36426 | integer *, real *, integer *, real *, real *, integer *, real *, |
| 36427 | integer *, integer *); |
| 36428 | |
| 36429 | |
| 36430 | /* |
| 36431 | -- LAPACK routine (version 3.2) -- |
| 36432 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 36433 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 36434 | November 2006 |
| 36435 | |
| 36436 | |
| 36437 | Purpose |
| 36438 | ======= |
| 36439 | |
| 36440 | SORMTR overwrites the general real M-by-N matrix C with |
| 36441 | |
| 36442 | SIDE = 'L' SIDE = 'R' |
| 36443 | TRANS = 'N': Q * C C * Q |
| 36444 | TRANS = 'T': Q**T * C C * Q**T |
| 36445 | |
| 36446 | where Q is a real orthogonal matrix of order nq, with nq = m if |
| 36447 | SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of |
| 36448 | nq-1 elementary reflectors, as returned by SSYTRD: |
| 36449 | |
| 36450 | if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); |
| 36451 | |
| 36452 | if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). |
| 36453 | |
| 36454 | Arguments |
| 36455 | ========= |
| 36456 | |
| 36457 | SIDE (input) CHARACTER*1 |
| 36458 | = 'L': apply Q or Q**T from the Left; |
| 36459 | = 'R': apply Q or Q**T from the Right. |