Mercurial > octave-nkf
comparison libcruft/lapack/dorgql.f @ 7034:68db500cb558
[project @ 2007-10-16 18:54:19 by jwe]
author | jwe |
---|---|
date | Tue, 16 Oct 2007 18:54:23 +0000 |
parents | 15cddaacbc2d |
children |
comparison
equal
deleted
inserted
replaced
7033:f0142f2afdc6 | 7034:68db500cb558 |
---|---|
1 SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) | 1 SUBROUTINE DORGQL( M, N, K, A, LDA, TAU, WORK, LWORK, INFO ) |
2 * | 2 * |
3 * -- LAPACK routine (version 3.0) -- | 3 * -- LAPACK routine (version 3.1) -- |
4 * Univ. of Tennessee, Univ. of California Berkeley, NAG Ltd., | 4 * Univ. of Tennessee, Univ. of California Berkeley and NAG Ltd.. |
5 * Courant Institute, Argonne National Lab, and Rice University | 5 * November 2006 |
6 * June 30, 1999 | |
7 * | 6 * |
8 * .. Scalar Arguments .. | 7 * .. Scalar Arguments .. |
9 INTEGER INFO, K, LDA, LWORK, M, N | 8 INTEGER INFO, K, LDA, LWORK, M, N |
10 * .. | 9 * .. |
11 * .. Array Arguments .. | 10 * .. Array Arguments .. |
48 * | 47 * |
49 * TAU (input) DOUBLE PRECISION array, dimension (K) | 48 * TAU (input) DOUBLE PRECISION array, dimension (K) |
50 * TAU(i) must contain the scalar factor of the elementary | 49 * TAU(i) must contain the scalar factor of the elementary |
51 * reflector H(i), as returned by DGEQLF. | 50 * reflector H(i), as returned by DGEQLF. |
52 * | 51 * |
53 * WORK (workspace/output) DOUBLE PRECISION array, dimension (LWORK) | 52 * WORK (workspace/output) DOUBLE PRECISION array, dimension (MAX(1,LWORK)) |
54 * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. | 53 * On exit, if INFO = 0, WORK(1) returns the optimal LWORK. |
55 * | 54 * |
56 * LWORK (input) INTEGER | 55 * LWORK (input) INTEGER |
57 * The dimension of the array WORK. LWORK >= max(1,N). | 56 * The dimension of the array WORK. LWORK >= max(1,N). |
58 * For optimum performance LWORK >= N*NB, where NB is the | 57 * For optimum performance LWORK >= N*NB, where NB is the |
91 * .. Executable Statements .. | 90 * .. Executable Statements .. |
92 * | 91 * |
93 * Test the input arguments | 92 * Test the input arguments |
94 * | 93 * |
95 INFO = 0 | 94 INFO = 0 |
96 NB = ILAENV( 1, 'DORGQL', ' ', M, N, K, -1 ) | |
97 LWKOPT = MAX( 1, N )*NB | |
98 WORK( 1 ) = LWKOPT | |
99 LQUERY = ( LWORK.EQ.-1 ) | 95 LQUERY = ( LWORK.EQ.-1 ) |
100 IF( M.LT.0 ) THEN | 96 IF( M.LT.0 ) THEN |
101 INFO = -1 | 97 INFO = -1 |
102 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN | 98 ELSE IF( N.LT.0 .OR. N.GT.M ) THEN |
103 INFO = -2 | 99 INFO = -2 |
104 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN | 100 ELSE IF( K.LT.0 .OR. K.GT.N ) THEN |
105 INFO = -3 | 101 INFO = -3 |
106 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN | 102 ELSE IF( LDA.LT.MAX( 1, M ) ) THEN |
107 INFO = -5 | 103 INFO = -5 |
108 ELSE IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN | 104 END IF |
109 INFO = -8 | 105 * |
110 END IF | 106 IF( INFO.EQ.0 ) THEN |
107 IF( N.EQ.0 ) THEN | |
108 LWKOPT = 1 | |
109 ELSE | |
110 NB = ILAENV( 1, 'DORGQL', ' ', M, N, K, -1 ) | |
111 LWKOPT = N*NB | |
112 END IF | |
113 WORK( 1 ) = LWKOPT | |
114 * | |
115 IF( LWORK.LT.MAX( 1, N ) .AND. .NOT.LQUERY ) THEN | |
116 INFO = -8 | |
117 END IF | |
118 END IF | |
119 * | |
111 IF( INFO.NE.0 ) THEN | 120 IF( INFO.NE.0 ) THEN |
112 CALL XERBLA( 'DORGQL', -INFO ) | 121 CALL XERBLA( 'DORGQL', -INFO ) |
113 RETURN | 122 RETURN |
114 ELSE IF( LQUERY ) THEN | 123 ELSE IF( LQUERY ) THEN |
115 RETURN | 124 RETURN |
116 END IF | 125 END IF |
117 * | 126 * |
118 * Quick return if possible | 127 * Quick return if possible |
119 * | 128 * |
120 IF( N.LE.0 ) THEN | 129 IF( N.LE.0 ) THEN |
121 WORK( 1 ) = 1 | |
122 RETURN | 130 RETURN |
123 END IF | 131 END IF |
124 * | 132 * |
125 NBMIN = 2 | 133 NBMIN = 2 |
126 NX = 0 | 134 NX = 0 |