3 * =========== DOCUMENTATION ===========
5 * Online html documentation available at
6 * http://www.netlib.org/lapack/explore-html/
11 * SUBROUTINE DERRQL( PATH, NUNIT )
13 * .. Scalar Arguments ..
24 *> DERRQL tests the error exits for the DOUBLE PRECISION routines
25 *> that use the QL decomposition of a general matrix.
33 *> PATH is CHARACTER*3
34 *> The LAPACK path name for the routines to be tested.
40 *> The unit number for output.
46 *> \author Univ. of Tennessee
47 *> \author Univ. of California Berkeley
48 *> \author Univ. of Colorado Denver
51 *> \date November 2011
53 *> \ingroup double_lin
55 * =====================================================================
56 SUBROUTINE DERRQL( PATH, NUNIT )
58 * -- LAPACK test routine (version 3.4.0) --
59 * -- LAPACK is a software package provided by Univ. of Tennessee, --
60 * -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..--
63 * .. Scalar Arguments ..
68 * =====================================================================
72 PARAMETER ( NMAX = 2 )
78 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79 $ W( NMAX ), X( NMAX )
81 * .. External Subroutines ..
82 EXTERNAL ALAESM, CHKXER, DGEQL2, DGEQLF, DGEQLS, DORG2L,
83 $ DORGQL, DORM2L, DORMQL
85 * .. Scalars in Common ..
91 COMMON / INFOC / INFOT, NOUT, OK, LERR
92 COMMON / SRNAMC / SRNAMT
94 * .. Intrinsic Functions ..
97 * .. Executable Statements ..
100 WRITE( NOUT, FMT = * )
102 * Set the variables to innocuous values.
106 A( I, J ) = 1.D0 / DBLE( I+J )
107 AF( I, J ) = 1.D0 / DBLE( I+J )
115 * Error exits for QL factorization
121 CALL DGEQLF( -1, 0, A, 1, B, W, 1, INFO )
122 CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
124 CALL DGEQLF( 0, -1, A, 1, B, W, 1, INFO )
125 CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
127 CALL DGEQLF( 2, 1, A, 1, B, W, 1, INFO )
128 CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
130 CALL DGEQLF( 1, 2, A, 1, B, W, 1, INFO )
131 CALL CHKXER( 'DGEQLF', INFOT, NOUT, LERR, OK )
137 CALL DGEQL2( -1, 0, A, 1, B, W, INFO )
138 CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
140 CALL DGEQL2( 0, -1, A, 1, B, W, INFO )
141 CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
143 CALL DGEQL2( 2, 1, A, 1, B, W, INFO )
144 CALL CHKXER( 'DGEQL2', INFOT, NOUT, LERR, OK )
150 CALL DGEQLS( -1, 0, 0, A, 1, X, B, 1, W, 1, INFO )
151 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
153 CALL DGEQLS( 0, -1, 0, A, 1, X, B, 1, W, 1, INFO )
154 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
156 CALL DGEQLS( 1, 2, 0, A, 1, X, B, 1, W, 1, INFO )
157 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
159 CALL DGEQLS( 0, 0, -1, A, 1, X, B, 1, W, 1, INFO )
160 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
162 CALL DGEQLS( 2, 1, 0, A, 1, X, B, 2, W, 1, INFO )
163 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
165 CALL DGEQLS( 2, 1, 0, A, 2, X, B, 1, W, 1, INFO )
166 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
168 CALL DGEQLS( 1, 1, 2, A, 1, X, B, 1, W, 1, INFO )
169 CALL CHKXER( 'DGEQLS', INFOT, NOUT, LERR, OK )
175 CALL DORGQL( -1, 0, 0, A, 1, X, W, 1, INFO )
176 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
178 CALL DORGQL( 0, -1, 0, A, 1, X, W, 1, INFO )
179 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
181 CALL DORGQL( 1, 2, 0, A, 1, X, W, 2, INFO )
182 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
184 CALL DORGQL( 0, 0, -1, A, 1, X, W, 1, INFO )
185 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
187 CALL DORGQL( 1, 1, 2, A, 1, X, W, 1, INFO )
188 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
190 CALL DORGQL( 2, 1, 0, A, 1, X, W, 1, INFO )
191 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
193 CALL DORGQL( 2, 2, 0, A, 2, X, W, 1, INFO )
194 CALL CHKXER( 'DORGQL', INFOT, NOUT, LERR, OK )
200 CALL DORG2L( -1, 0, 0, A, 1, X, W, INFO )
201 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
203 CALL DORG2L( 0, -1, 0, A, 1, X, W, INFO )
204 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
206 CALL DORG2L( 1, 2, 0, A, 1, X, W, INFO )
207 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
209 CALL DORG2L( 0, 0, -1, A, 1, X, W, INFO )
210 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
212 CALL DORG2L( 2, 1, 2, A, 2, X, W, INFO )
213 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
215 CALL DORG2L( 2, 1, 0, A, 1, X, W, INFO )
216 CALL CHKXER( 'DORG2L', INFOT, NOUT, LERR, OK )
222 CALL DORMQL( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
223 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
225 CALL DORMQL( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
226 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
228 CALL DORMQL( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, 1, INFO )
229 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
231 CALL DORMQL( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, 1, INFO )
232 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
234 CALL DORMQL( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, 1, INFO )
235 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
237 CALL DORMQL( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, 1, INFO )
238 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
240 CALL DORMQL( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, 1, INFO )
241 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
243 CALL DORMQL( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
244 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
246 CALL DORMQL( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
247 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
249 CALL DORMQL( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, 1, INFO )
250 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
252 CALL DORMQL( 'L', 'N', 1, 2, 0, A, 1, X, AF, 1, W, 1, INFO )
253 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
255 CALL DORMQL( 'R', 'N', 2, 1, 0, A, 1, X, AF, 2, W, 1, INFO )
256 CALL CHKXER( 'DORMQL', INFOT, NOUT, LERR, OK )
262 CALL DORM2L( '/', 'N', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
263 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
265 CALL DORM2L( 'L', '/', 0, 0, 0, A, 1, X, AF, 1, W, INFO )
266 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
268 CALL DORM2L( 'L', 'N', -1, 0, 0, A, 1, X, AF, 1, W, INFO )
269 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
271 CALL DORM2L( 'L', 'N', 0, -1, 0, A, 1, X, AF, 1, W, INFO )
272 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
274 CALL DORM2L( 'L', 'N', 0, 0, -1, A, 1, X, AF, 1, W, INFO )
275 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
277 CALL DORM2L( 'L', 'N', 0, 1, 1, A, 1, X, AF, 1, W, INFO )
278 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
280 CALL DORM2L( 'R', 'N', 1, 0, 1, A, 1, X, AF, 1, W, INFO )
281 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
283 CALL DORM2L( 'L', 'N', 2, 1, 0, A, 1, X, AF, 2, W, INFO )
284 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
286 CALL DORM2L( 'R', 'N', 1, 2, 0, A, 1, X, AF, 1, W, INFO )
287 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
289 CALL DORM2L( 'L', 'N', 2, 1, 0, A, 2, X, AF, 1, W, INFO )
290 CALL CHKXER( 'DORM2L', INFOT, NOUT, LERR, OK )
292 * Print a summary line.
294 CALL ALAESM( PATH, OK, NOUT )