55
56
57
58
59
60
61 CHARACTER*3 PATH
62 INTEGER NUNIT
63
64
65
66
67
68 INTEGER NMAX, LW
69 parameter( nmax = 4, lw = 3*nmax )
70
71
72 CHARACTER*2 C2
73 INTEGER I, INFO, J
74 DOUBLE PRECISION ANRM, CCOND, RCOND
75
76
77 INTEGER IP( NMAX ), IW( NMAX )
78 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
79 $ R1( NMAX ), R2( NMAX ), W( LW ), X( NMAX )
80
81
82 LOGICAL LSAMEN
84
85
89
90
91 LOGICAL LERR, OK
92 CHARACTER*32 SRNAMT
93 INTEGER INFOT, NOUT
94
95
96 COMMON / infoc / infot, nout, ok, lerr
97 COMMON / srnamc / srnamt
98
99
100 INTRINSIC dble
101
102
103
104 nout = nunit
105 WRITE( nout, fmt = * )
106 c2 = path( 2: 3 )
107
108
109
110 DO 20 j = 1, nmax
111 DO 10 i = 1, nmax
112 a( i, j ) = 1.d0 / dble( i+j )
113 af( i, j ) = 1.d0 / dble( i+j )
114 10 CONTINUE
115 b( j ) = 0.d0
116 r1( j ) = 0.d0
117 r2( j ) = 0.d0
118 w( j ) = 0.d0
119 x( j ) = 0.d0
120 ip( j ) = j
121 iw( j ) = j
122 20 CONTINUE
123 ok = .true.
124
125 IF(
lsamen( 2, c2,
'GE' ) )
THEN
126
127
128
129
130
131
132 srnamt = 'DGETRF'
133 infot = 1
134 CALL dgetrf( -1, 0, a, 1, ip, info )
135 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
136 infot = 2
137 CALL dgetrf( 0, -1, a, 1, ip, info )
138 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
139 infot = 4
140 CALL dgetrf( 2, 1, a, 1, ip, info )
141 CALL chkxer(
'DGETRF', infot, nout, lerr, ok )
142
143
144
145 srnamt = 'DGETF2'
146 infot = 1
147 CALL dgetf2( -1, 0, a, 1, ip, info )
148 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
149 infot = 2
150 CALL dgetf2( 0, -1, a, 1, ip, info )
151 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
152 infot = 4
153 CALL dgetf2( 2, 1, a, 1, ip, info )
154 CALL chkxer(
'DGETF2', infot, nout, lerr, ok )
155
156
157
158 srnamt = 'DGETRI'
159 infot = 1
160 CALL dgetri( -1, a, 1, ip, w, lw, info )
161 CALL chkxer(
'DGETRI', infot, nout, lerr, ok )
162 infot = 3
163 CALL dgetri( 2, a, 1, ip, w, lw, info )
164 CALL chkxer(
'DGETRI', infot, nout, lerr, ok )
165
166
167
168 srnamt = 'DGETRS'
169 infot = 1
170 CALL dgetrs(
'/', 0, 0, a, 1, ip, b, 1, info )
171 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
172 infot = 2
173 CALL dgetrs(
'N', -1, 0, a, 1, ip, b, 1, info )
174 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
175 infot = 3
176 CALL dgetrs(
'N', 0, -1, a, 1, ip, b, 1, info )
177 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
178 infot = 5
179 CALL dgetrs(
'N', 2, 1, a, 1, ip, b, 2, info )
180 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
181 infot = 8
182 CALL dgetrs(
'N', 2, 1, a, 2, ip, b, 1, info )
183 CALL chkxer(
'DGETRS', infot, nout, lerr, ok )
184
185
186
187 srnamt = 'DGERFS'
188 infot = 1
189 CALL dgerfs(
'/', 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2, w,
190 $ iw, info )
191 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
192 infot = 2
193 CALL dgerfs(
'N', -1, 0, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
194 $ w, iw, info )
195 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
196 infot = 3
197 CALL dgerfs(
'N', 0, -1, a, 1, af, 1, ip, b, 1, x, 1, r1, r2,
198 $ w, iw, info )
199 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
200 infot = 5
201 CALL dgerfs(
'N', 2, 1, a, 1, af, 2, ip, b, 2, x, 2, r1, r2, w,
202 $ iw, info )
203 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
204 infot = 7
205 CALL dgerfs(
'N', 2, 1, a, 2, af, 1, ip, b, 2, x, 2, r1, r2, w,
206 $ iw, info )
207 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
208 infot = 10
209 CALL dgerfs(
'N', 2, 1, a, 2, af, 2, ip, b, 1, x, 2, r1, r2, w,
210 $ iw, info )
211 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
212 infot = 12
213 CALL dgerfs(
'N', 2, 1, a, 2, af, 2, ip, b, 2, x, 1, r1, r2, w,
214 $ iw, info )
215 CALL chkxer(
'DGERFS', infot, nout, lerr, ok )
216
217
218
219 srnamt = 'DGECON'
220 infot = 1
221 CALL dgecon(
'/', 0, a, 1, anrm, rcond, w, iw, info )
222 CALL chkxer(
'DGECON', infot, nout, lerr, ok )
223 infot = 2
224 CALL dgecon(
'1', -1, a, 1, anrm, rcond, w, iw, info )
225 CALL chkxer(
'DGECON', infot, nout, lerr, ok )
226 infot = 4
227 CALL dgecon(
'1', 2, a, 1, anrm, rcond, w, iw, info )
228 CALL chkxer(
'DGECON', infot, nout, lerr, ok )
229
230
231
232 srnamt = 'DGEEQU'
233 infot = 1
234 CALL dgeequ( -1, 0, a, 1, r1, r2, rcond, ccond, anrm, info )
235 CALL chkxer(
'DGEEQU', infot, nout, lerr, ok )
236 infot = 2
237 CALL dgeequ( 0, -1, a, 1, r1, r2, rcond, ccond, anrm, info )
238 CALL chkxer(
'DGEEQU', infot, nout, lerr, ok )
239 infot = 4
240 CALL dgeequ( 2, 2, a, 1, r1, r2, rcond, ccond, anrm, info )
241 CALL chkxer(
'DGEEQU', infot, nout, lerr, ok )
242
243 ELSE IF(
lsamen( 2, c2,
'GB' ) )
THEN
244
245
246
247
248
249
250 srnamt = 'DGBTRF'
251 infot = 1
252 CALL dgbtrf( -1, 0, 0, 0, a, 1, ip, info )
253 CALL chkxer(
'DGBTRF', infot, nout, lerr, ok )
254 infot = 2
255 CALL dgbtrf( 0, -1, 0, 0, a, 1, ip, info )
256 CALL chkxer(
'DGBTRF', infot, nout, lerr, ok )
257 infot = 3
258 CALL dgbtrf( 1, 1, -1, 0, a, 1, ip, info )
259 CALL chkxer(
'DGBTRF', infot, nout, lerr, ok )
260 infot = 4
261 CALL dgbtrf( 1, 1, 0, -1, a, 1, ip, info )
262 CALL chkxer(
'DGBTRF', infot, nout, lerr, ok )
263 infot = 6
264 CALL dgbtrf( 2, 2, 1, 1, a, 3, ip, info )
265 CALL chkxer(
'DGBTRF', infot, nout, lerr, ok )
266
267
268
269 srnamt = 'DGBTF2'
270 infot = 1
271 CALL dgbtf2( -1, 0, 0, 0, a, 1, ip, info )
272 CALL chkxer(
'DGBTF2', infot, nout, lerr, ok )
273 infot = 2
274 CALL dgbtf2( 0, -1, 0, 0, a, 1, ip, info )
275 CALL chkxer(
'DGBTF2', infot, nout, lerr, ok )
276 infot = 3
277 CALL dgbtf2( 1, 1, -1, 0, a, 1, ip, info )
278 CALL chkxer(
'DGBTF2', infot, nout, lerr, ok )
279 infot = 4
280 CALL dgbtf2( 1, 1, 0, -1, a, 1, ip, info )
281 CALL chkxer(
'DGBTF2', infot, nout, lerr, ok )
282 infot = 6
283 CALL dgbtf2( 2, 2, 1, 1, a, 3, ip, info )
284 CALL chkxer(
'DGBTF2', infot, nout, lerr, ok )
285
286
287
288 srnamt = 'DGBTRS'
289 infot = 1
290 CALL dgbtrs(
'/', 0, 0, 0, 1, a, 1, ip, b, 1, info )
291 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
292 infot = 2
293 CALL dgbtrs(
'N', -1, 0, 0, 1, a, 1, ip, b, 1, info )
294 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
295 infot = 3
296 CALL dgbtrs(
'N', 1, -1, 0, 1, a, 1, ip, b, 1, info )
297 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
298 infot = 4
299 CALL dgbtrs(
'N', 1, 0, -1, 1, a, 1, ip, b, 1, info )
300 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
301 infot = 5
302 CALL dgbtrs(
'N', 1, 0, 0, -1, a, 1, ip, b, 1, info )
303 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
304 infot = 7
305 CALL dgbtrs(
'N', 2, 1, 1, 1, a, 3, ip, b, 2, info )
306 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
307 infot = 10
308 CALL dgbtrs(
'N', 2, 0, 0, 1, a, 1, ip, b, 1, info )
309 CALL chkxer(
'DGBTRS', infot, nout, lerr, ok )
310
311
312
313 srnamt = 'DGBRFS'
314 infot = 1
315 CALL dgbrfs(
'/', 0, 0, 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1,
316 $ r2, w, iw, info )
317 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
318 infot = 2
319 CALL dgbrfs(
'N', -1, 0, 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1,
320 $ r2, w, iw, info )
321 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
322 infot = 3
323 CALL dgbrfs(
'N', 1, -1, 0, 0, a, 1, af, 1, ip, b, 1, x, 1, r1,
324 $ r2, w, iw, info )
325 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
326 infot = 4
327 CALL dgbrfs(
'N', 1, 0, -1, 0, a, 1, af, 1, ip, b, 1, x, 1, r1,
328 $ r2, w, iw, info )
329 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
330 infot = 5
331 CALL dgbrfs(
'N', 1, 0, 0, -1, a, 1, af, 1, ip, b, 1, x, 1, r1,
332 $ r2, w, iw, info )
333 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
334 infot = 7
335 CALL dgbrfs(
'N', 2, 1, 1, 1, a, 2, af, 4, ip, b, 2, x, 2, r1,
336 $ r2, w, iw, info )
337 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
338 infot = 9
339 CALL dgbrfs(
'N', 2, 1, 1, 1, a, 3, af, 3, ip, b, 2, x, 2, r1,
340 $ r2, w, iw, info )
341 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
342 infot = 12
343 CALL dgbrfs(
'N', 2, 0, 0, 1, a, 1, af, 1, ip, b, 1, x, 2, r1,
344 $ r2, w, iw, info )
345 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
346 infot = 14
347 CALL dgbrfs(
'N', 2, 0, 0, 1, a, 1, af, 1, ip, b, 2, x, 1, r1,
348 $ r2, w, iw, info )
349 CALL chkxer(
'DGBRFS', infot, nout, lerr, ok )
350
351
352
353 srnamt = 'DGBCON'
354 infot = 1
355 CALL dgbcon(
'/', 0, 0, 0, a, 1, ip, anrm, rcond, w, iw, info )
356 CALL chkxer(
'DGBCON', infot, nout, lerr, ok )
357 infot = 2
358 CALL dgbcon(
'1', -1, 0, 0, a, 1, ip, anrm, rcond, w, iw,
359 $ info )
360 CALL chkxer(
'DGBCON', infot, nout, lerr, ok )
361 infot = 3
362 CALL dgbcon(
'1', 1, -1, 0, a, 1, ip, anrm, rcond, w, iw,
363 $ info )
364 CALL chkxer(
'DGBCON', infot, nout, lerr, ok )
365 infot = 4
366 CALL dgbcon(
'1', 1, 0, -1, a, 1, ip, anrm, rcond, w, iw,
367 $ info )
368 CALL chkxer(
'DGBCON', infot, nout, lerr, ok )
369 infot = 6
370 CALL dgbcon(
'1', 2, 1, 1, a, 3, ip, anrm, rcond, w, iw, info )
371 CALL chkxer(
'DGBCON', infot, nout, lerr, ok )
372
373
374
375 srnamt = 'DGBEQU'
376 infot = 1
377 CALL dgbequ( -1, 0, 0, 0, a, 1, r1, r2, rcond, ccond, anrm,
378 $ info )
379 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
380 infot = 2
381 CALL dgbequ( 0, -1, 0, 0, a, 1, r1, r2, rcond, ccond, anrm,
382 $ info )
383 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
384 infot = 3
385 CALL dgbequ( 1, 1, -1, 0, a, 1, r1, r2, rcond, ccond, anrm,
386 $ info )
387 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
388 infot = 4
389 CALL dgbequ( 1, 1, 0, -1, a, 1, r1, r2, rcond, ccond, anrm,
390 $ info )
391 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
392 infot = 6
393 CALL dgbequ( 2, 2, 1, 1, a, 2, r1, r2, rcond, ccond, anrm,
394 $ info )
395 CALL chkxer(
'DGBEQU', infot, nout, lerr, ok )
396 END IF
397
398
399
400 CALL alaesm( path, ok, nout )
401
402 RETURN
403
404
405
subroutine alaesm(path, ok, nout)
ALAESM
subroutine chkxer(srnamt, infot, nout, lerr, ok)
subroutine dgbcon(norm, n, kl, ku, ab, ldab, ipiv, anorm, rcond, work, iwork, info)
DGBCON
subroutine dgbequ(m, n, kl, ku, ab, ldab, r, c, rowcnd, colcnd, amax, info)
DGBEQU
subroutine dgbrfs(trans, n, kl, ku, nrhs, ab, ldab, afb, ldafb, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DGBRFS
subroutine dgbtf2(m, n, kl, ku, ab, ldab, ipiv, info)
DGBTF2 computes the LU factorization of a general band matrix using the unblocked version of the algo...
subroutine dgbtrf(m, n, kl, ku, ab, ldab, ipiv, info)
DGBTRF
subroutine dgbtrs(trans, n, kl, ku, nrhs, ab, ldab, ipiv, b, ldb, info)
DGBTRS
subroutine dgecon(norm, n, a, lda, anorm, rcond, work, iwork, info)
DGECON
subroutine dgeequ(m, n, a, lda, r, c, rowcnd, colcnd, amax, info)
DGEEQU
subroutine dgerfs(trans, n, nrhs, a, lda, af, ldaf, ipiv, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DGERFS
subroutine dgetf2(m, n, a, lda, ipiv, info)
DGETF2 computes the LU factorization of a general m-by-n matrix using partial pivoting with row inter...
subroutine dgetrf(m, n, a, lda, ipiv, info)
DGETRF
subroutine dgetri(n, a, lda, ipiv, work, lwork, info)
DGETRI
subroutine dgetrs(trans, n, nrhs, a, lda, ipiv, b, ldb, info)
DGETRS
logical function lsamen(n, ca, cb)
LSAMEN