Subroutine */
| 36535 | } /* dormqr_ */ |
| 36536 | |
| 36537 | /* Subroutine */ int dormtr_(char *side, char *uplo, char *trans, integer *m, |
| 36538 | integer *n, doublereal *a, integer *lda, doublereal *tau, doublereal * |
| 36539 | c__, integer *ldc, doublereal *work, integer *lwork, integer *info) |
| 36540 | { |
| 36541 | /* System generated locals */ |
| 36542 | address a__1[2]; |
| 36543 | integer a_dim1, a_offset, c_dim1, c_offset, i__1[2], i__2, i__3; |
| 36544 | char ch__1[2]; |
| 36545 | |
| 36546 | /* Local variables */ |
| 36547 | static integer i1, i2, nb, mi, ni, nq, nw; |
| 36548 | static logical left; |
| 36549 | extern logical lsame_(char *, char *); |
| 36550 | static integer iinfo; |
| 36551 | static logical upper; |
| 36552 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 36553 | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| 36554 | integer *, integer *, ftnlen, ftnlen); |
| 36555 | extern /* Subroutine */ int dormql_(char *, char *, integer *, integer *, |
| 36556 | integer *, doublereal *, integer *, doublereal *, doublereal *, |
| 36557 | integer *, doublereal *, integer *, integer *), |
| 36558 | dormqr_(char *, char *, integer *, integer *, integer *, |
| 36559 | doublereal *, integer *, doublereal *, doublereal *, integer *, |
| 36560 | doublereal *, integer *, integer *); |
| 36561 | static integer lwkopt; |
| 36562 | static logical lquery; |
| 36563 | |
| 36564 | |
| 36565 | /* |
| 36566 | -- LAPACK routine (version 3.2) -- |
| 36567 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 36568 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 36569 | November 2006 |
| 36570 | |
| 36571 | |
| 36572 | Purpose |
| 36573 | ======= |
| 36574 | |
| 36575 | DORMTR overwrites the general real M-by-N matrix C with |
| 36576 | |
| 36577 | SIDE = 'L' SIDE = 'R' |
| 36578 | TRANS = 'N': Q * C C * Q |
| 36579 | TRANS = 'T': Q**T * C C * Q**T |
| 36580 | |
| 36581 | where Q is a real orthogonal matrix of order nq, with nq = m if |
| 36582 | SIDE = 'L' and nq = n if SIDE = 'R'. Q is defined as the product of |
| 36583 | nq-1 elementary reflectors, as returned by DSYTRD: |
| 36584 | |
| 36585 | if UPLO = 'U', Q = H(nq-1) . . . H(2) H(1); |
| 36586 | |
| 36587 | if UPLO = 'L', Q = H(1) H(2) . . . H(nq-1). |
| 36588 | |
| 36589 | Arguments |
| 36590 | ========= |
| 36591 | |
| 36592 | SIDE (input) CHARACTER*1 |
| 36593 | = 'L': apply Q or Q**T from the Left; |
| 36594 | = 'R': apply Q or Q**T from the Right. |