Subroutine */
| 34875 | } /* dorm2r_ */ |
| 34876 | |
| 34877 | /* Subroutine */ int dormbr_(char *vect, char *side, char *trans, integer *m, |
| 34878 | integer *n, integer *k, doublereal *a, integer *lda, doublereal *tau, |
| 34879 | doublereal *c__, integer *ldc, doublereal *work, integer *lwork, |
| 34880 | integer *info) |
| 34881 | { |
| 34882 | /* System generated locals */ |
| 34883 | address a__1[2]; |
| 34884 | integer a_dim1, a_offset, c_dim1, c_offset, i__1, i__2, i__3[2]; |
| 34885 | char ch__1[2]; |
| 34886 | |
| 34887 | /* Local variables */ |
| 34888 | static integer i1, i2, nb, mi, ni, nq, nw; |
| 34889 | static logical left; |
| 34890 | extern logical lsame_(char *, char *); |
| 34891 | static integer iinfo; |
| 34892 | extern /* Subroutine */ int xerbla_(char *, integer *); |
| 34893 | extern integer ilaenv_(integer *, char *, char *, integer *, integer *, |
| 34894 | integer *, integer *, ftnlen, ftnlen); |
| 34895 | extern /* Subroutine */ int dormlq_(char *, char *, integer *, integer *, |
| 34896 | integer *, doublereal *, integer *, doublereal *, doublereal *, |
| 34897 | integer *, doublereal *, integer *, integer *); |
| 34898 | static logical notran; |
| 34899 | extern /* Subroutine */ int dormqr_(char *, char *, integer *, integer *, |
| 34900 | integer *, doublereal *, integer *, doublereal *, doublereal *, |
| 34901 | integer *, doublereal *, integer *, integer *); |
| 34902 | static logical applyq; |
| 34903 | static char transt[1]; |
| 34904 | static integer lwkopt; |
| 34905 | static logical lquery; |
| 34906 | |
| 34907 | |
| 34908 | /* |
| 34909 | -- LAPACK routine (version 3.2) -- |
| 34910 | -- LAPACK is a software package provided by Univ. of Tennessee, -- |
| 34911 | -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- |
| 34912 | November 2006 |
| 34913 | |
| 34914 | |
| 34915 | Purpose |
| 34916 | ======= |
| 34917 | |
| 34918 | If VECT = 'Q', DORMBR overwrites the general real M-by-N matrix C |
| 34919 | with |
| 34920 | SIDE = 'L' SIDE = 'R' |
| 34921 | TRANS = 'N': Q * C C * Q |
| 34922 | TRANS = 'T': Q**T * C C * Q**T |
| 34923 | |
| 34924 | If VECT = 'P', DORMBR overwrites the general real M-by-N matrix C |
| 34925 | with |
| 34926 | SIDE = 'L' SIDE = 'R' |
| 34927 | TRANS = 'N': P * C C * P |
| 34928 | TRANS = 'T': P**T * C C * P**T |
| 34929 | |
| 34930 | Here Q and P**T are the orthogonal matrices determined by DGEBRD when |
| 34931 | reducing a real matrix A to bidiagonal form: A = Q * B * P**T. Q and |
| 34932 | P**T are defined as products of elementary reflectors H(i) and G(i) |
| 34933 | respectively. |
| 34934 |