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