58
59
60
61
62
63
64 CHARACTER*3 PATH
65 INTEGER NUNIT
66
67
68
69
70
71 INTEGER NMAX
72 parameter( nmax = 4 )
73
74
75 CHARACTER EQ
76 CHARACTER*2 C2
77 INTEGER I, INFO, J, N_ERR_BNDS, NPARAMS
78 DOUBLE PRECISION ANRM, RCOND, BERR
79
80
81 INTEGER IW( NMAX )
82 DOUBLE PRECISION A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
83 $ R1( NMAX ), R2( NMAX ), W( 3*NMAX ), X( NMAX ),
84 $ S( NMAX ), ERR_BNDS_N( NMAX, 3 ),
85 $ ERR_BNDS_C( NMAX, 3), PARAMS( 1 )
86
87
88 LOGICAL LSAMEN
90
91
96
97
98 LOGICAL LERR, OK
99 CHARACTER*32 SRNAMT
100 INTEGER INFOT, NOUT
101
102
103 COMMON / infoc / infot, nout, ok, lerr
104 COMMON / srnamc / srnamt
105
106
107 INTRINSIC dble
108
109
110
111 nout = nunit
112 WRITE( nout, fmt = * )
113 c2 = path( 2: 3 )
114
115
116
117 DO 20 j = 1, nmax
118 DO 10 i = 1, nmax
119 a( i, j ) = 1.d0 / dble( i+j )
120 af( i, j ) = 1.d0 / dble( i+j )
121 10 CONTINUE
122 b( j ) = 0.d0
123 r1( j ) = 0.d0
124 r2( j ) = 0.d0
125 w( j ) = 0.d0
126 x( j ) = 0.d0
127 s( j ) = 0.d0
128 iw( j ) = j
129 20 CONTINUE
130 ok = .true.
131
132 IF(
lsamen( 2, c2,
'PO' ) )
THEN
133
134
135
136
137
138
139 srnamt = 'DPOTRF'
140 infot = 1
141 CALL dpotrf(
'/', 0, a, 1, info )
142 CALL chkxer(
'DPOTRF', infot, nout, lerr, ok )
143 infot = 2
144 CALL dpotrf(
'U', -1, a, 1, info )
145 CALL chkxer(
'DPOTRF', infot, nout, lerr, ok )
146 infot = 4
147 CALL dpotrf(
'U', 2, a, 1, info )
148 CALL chkxer(
'DPOTRF', infot, nout, lerr, ok )
149
150
151
152 srnamt = 'DPOTF2'
153 infot = 1
154 CALL dpotf2(
'/', 0, a, 1, info )
155 CALL chkxer(
'DPOTF2', infot, nout, lerr, ok )
156 infot = 2
157 CALL dpotf2(
'U', -1, a, 1, info )
158 CALL chkxer(
'DPOTF2', infot, nout, lerr, ok )
159 infot = 4
160 CALL dpotf2(
'U', 2, a, 1, info )
161 CALL chkxer(
'DPOTF2', infot, nout, lerr, ok )
162
163
164
165 srnamt = 'DPOTRI'
166 infot = 1
167 CALL dpotri(
'/', 0, a, 1, info )
168 CALL chkxer(
'DPOTRI', infot, nout, lerr, ok )
169 infot = 2
170 CALL dpotri(
'U', -1, a, 1, info )
171 CALL chkxer(
'DPOTRI', infot, nout, lerr, ok )
172 infot = 4
173 CALL dpotri(
'U', 2, a, 1, info )
174 CALL chkxer(
'DPOTRI', infot, nout, lerr, ok )
175
176
177
178 srnamt = 'DPOTRS'
179 infot = 1
180 CALL dpotrs(
'/', 0, 0, a, 1, b, 1, info )
181 CALL chkxer(
'DPOTRS', infot, nout, lerr, ok )
182 infot = 2
183 CALL dpotrs(
'U', -1, 0, a, 1, b, 1, info )
184 CALL chkxer(
'DPOTRS', infot, nout, lerr, ok )
185 infot = 3
186 CALL dpotrs(
'U', 0, -1, a, 1, b, 1, info )
187 CALL chkxer(
'DPOTRS', infot, nout, lerr, ok )
188 infot = 5
189 CALL dpotrs(
'U', 2, 1, a, 1, b, 2, info )
190 CALL chkxer(
'DPOTRS', infot, nout, lerr, ok )
191 infot = 7
192 CALL dpotrs(
'U', 2, 1, a, 2, b, 1, info )
193 CALL chkxer(
'DPOTRS', infot, nout, lerr, ok )
194
195
196
197 srnamt = 'DPORFS'
198 infot = 1
199 CALL dporfs(
'/', 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w, iw,
200 $ info )
201 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
202 infot = 2
203 CALL dporfs(
'U', -1, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
204 $ iw, info )
205 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
206 infot = 3
207 CALL dporfs(
'U', 0, -1, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
208 $ iw, info )
209 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
210 infot = 5
211 CALL dporfs(
'U', 2, 1, a, 1, af, 2, b, 2, x, 2, r1, r2, w, iw,
212 $ info )
213 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
214 infot = 7
215 CALL dporfs(
'U', 2, 1, a, 2, af, 1, b, 2, x, 2, r1, r2, w, iw,
216 $ info )
217 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
218 infot = 9
219 CALL dporfs(
'U', 2, 1, a, 2, af, 2, b, 1, x, 2, r1, r2, w, iw,
220 $ info )
221 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
222 infot = 11
223 CALL dporfs(
'U', 2, 1, a, 2, af, 2, b, 2, x, 1, r1, r2, w, iw,
224 $ info )
225 CALL chkxer(
'DPORFS', infot, nout, lerr, ok )
226
227
228
229 n_err_bnds = 3
230 nparams = 0
231 srnamt = 'DPORFSX'
232 infot = 1
233 CALL dporfsx(
'/', eq, 0, 0, a, 1, af, 1, s, b, 1, x, 1,
234 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
235 $ params, w, iw, info )
236 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
237 infot = 2
238 CALL dporfsx(
'U',
"/", -1, 0, a, 1, af, 1, s, b, 1, x, 1,
239 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
240 $ params, w, iw, info )
241 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
242 eq = 'N'
243 infot = 3
244 CALL dporfsx(
'U', eq, -1, 0, a, 1, af, 1, s, b, 1, x, 1,
245 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
246 $ params, w, iw, info )
247 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
248 infot = 4
249 CALL dporfsx(
'U', eq, 0, -1, a, 1, af, 1, s, b, 1, x, 1,
250 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
251 $ params, w, iw, info )
252 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
253 infot = 6
254 CALL dporfsx(
'U', eq, 2, 1, a, 1, af, 2, s, b, 2, x, 2,
255 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
256 $ params, w, iw, info )
257 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
258 infot = 8
259 CALL dporfsx(
'U', eq, 2, 1, a, 2, af, 1, s, b, 2, x, 2,
260 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
261 $ params, w, iw, info )
262 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
263 infot = 11
264 CALL dporfsx(
'U', eq, 2, 1, a, 2, af, 2, s, b, 1, x, 2,
265 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
266 $ params, w, iw, info )
267 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
268 infot = 13
269 CALL dporfsx(
'U', eq, 2, 1, a, 2, af, 2, s, b, 2, x, 1,
270 $ rcond, berr, n_err_bnds, err_bnds_n, err_bnds_c, nparams,
271 $ params, w, iw, info )
272 CALL chkxer(
'DPORFSX', infot, nout, lerr, ok )
273
274
275
276 srnamt = 'DPOCON'
277 infot = 1
278 CALL dpocon(
'/', 0, a, 1, anrm, rcond, w, iw, info )
279 CALL chkxer(
'DPOCON', infot, nout, lerr, ok )
280 infot = 2
281 CALL dpocon(
'U', -1, a, 1, anrm, rcond, w, iw, info )
282 CALL chkxer(
'DPOCON', infot, nout, lerr, ok )
283 infot = 4
284 CALL dpocon(
'U', 2, a, 1, anrm, rcond, w, iw, info )
285 CALL chkxer(
'DPOCON', infot, nout, lerr, ok )
286
287
288
289 srnamt = 'DPOEQU'
290 infot = 1
291 CALL dpoequ( -1, a, 1, r1, rcond, anrm, info )
292 CALL chkxer(
'DPOEQU', infot, nout, lerr, ok )
293 infot = 3
294 CALL dpoequ( 2, a, 1, r1, rcond, anrm, info )
295 CALL chkxer(
'DPOEQU', infot, nout, lerr, ok )
296
297
298
299 srnamt = 'DPOEQUB'
300 infot = 1
301 CALL dpoequb( -1, a, 1, r1, rcond, anrm, info )
302 CALL chkxer(
'DPOEQUB', infot, nout, lerr, ok )
303 infot = 3
304 CALL dpoequb( 2, a, 1, r1, rcond, anrm, info )
305 CALL chkxer(
'DPOEQUB', infot, nout, lerr, ok )
306
307 ELSE IF(
lsamen( 2, c2,
'PP' ) )
THEN
308
309
310
311
312
313
314 srnamt = 'DPPTRF'
315 infot = 1
316 CALL dpptrf(
'/', 0, a, info )
317 CALL chkxer(
'DPPTRF', infot, nout, lerr, ok )
318 infot = 2
319 CALL dpptrf(
'U', -1, a, info )
320 CALL chkxer(
'DPPTRF', infot, nout, lerr, ok )
321
322
323
324 srnamt = 'DPPTRI'
325 infot = 1
326 CALL dpptri(
'/', 0, a, info )
327 CALL chkxer(
'DPPTRI', infot, nout, lerr, ok )
328 infot = 2
329 CALL dpptri(
'U', -1, a, info )
330 CALL chkxer(
'DPPTRI', infot, nout, lerr, ok )
331
332
333
334 srnamt = 'DPPTRS'
335 infot = 1
336 CALL dpptrs(
'/', 0, 0, a, b, 1, info )
337 CALL chkxer(
'DPPTRS', infot, nout, lerr, ok )
338 infot = 2
339 CALL dpptrs(
'U', -1, 0, a, b, 1, info )
340 CALL chkxer(
'DPPTRS', infot, nout, lerr, ok )
341 infot = 3
342 CALL dpptrs(
'U', 0, -1, a, b, 1, info )
343 CALL chkxer(
'DPPTRS', infot, nout, lerr, ok )
344 infot = 6
345 CALL dpptrs(
'U', 2, 1, a, b, 1, info )
346 CALL chkxer(
'DPPTRS', infot, nout, lerr, ok )
347
348
349
350 srnamt = 'DPPRFS'
351 infot = 1
352 CALL dpprfs(
'/', 0, 0, a, af, b, 1, x, 1, r1, r2, w, iw,
353 $ info )
354 CALL chkxer(
'DPPRFS', infot, nout, lerr, ok )
355 infot = 2
356 CALL dpprfs(
'U', -1, 0, a, af, b, 1, x, 1, r1, r2, w, iw,
357 $ info )
358 CALL chkxer(
'DPPRFS', infot, nout, lerr, ok )
359 infot = 3
360 CALL dpprfs(
'U', 0, -1, a, af, b, 1, x, 1, r1, r2, w, iw,
361 $ info )
362 CALL chkxer(
'DPPRFS', infot, nout, lerr, ok )
363 infot = 7
364 CALL dpprfs(
'U', 2, 1, a, af, b, 1, x, 2, r1, r2, w, iw,
365 $ info )
366 CALL chkxer(
'DPPRFS', infot, nout, lerr, ok )
367 infot = 9
368 CALL dpprfs(
'U', 2, 1, a, af, b, 2, x, 1, r1, r2, w, iw,
369 $ info )
370 CALL chkxer(
'DPPRFS', infot, nout, lerr, ok )
371
372
373
374 srnamt = 'DPPCON'
375 infot = 1
376 CALL dppcon(
'/', 0, a, anrm, rcond, w, iw, info )
377 CALL chkxer(
'DPPCON', infot, nout, lerr, ok )
378 infot = 2
379 CALL dppcon(
'U', -1, a, anrm, rcond, w, iw, info )
380 CALL chkxer(
'DPPCON', infot, nout, lerr, ok )
381
382
383
384 srnamt = 'DPPEQU'
385 infot = 1
386 CALL dppequ(
'/', 0, a, r1, rcond, anrm, info )
387 CALL chkxer(
'DPPEQU', infot, nout, lerr, ok )
388 infot = 2
389 CALL dppequ(
'U', -1, a, r1, rcond, anrm, info )
390 CALL chkxer(
'DPPEQU', infot, nout, lerr, ok )
391
392 ELSE IF(
lsamen( 2, c2,
'PB' ) )
THEN
393
394
395
396
397
398
399 srnamt = 'DPBTRF'
400 infot = 1
401 CALL dpbtrf(
'/', 0, 0, a, 1, info )
402 CALL chkxer(
'DPBTRF', infot, nout, lerr, ok )
403 infot = 2
404 CALL dpbtrf(
'U', -1, 0, a, 1, info )
405 CALL chkxer(
'DPBTRF', infot, nout, lerr, ok )
406 infot = 3
407 CALL dpbtrf(
'U', 1, -1, a, 1, info )
408 CALL chkxer(
'DPBTRF', infot, nout, lerr, ok )
409 infot = 5
410 CALL dpbtrf(
'U', 2, 1, a, 1, info )
411 CALL chkxer(
'DPBTRF', infot, nout, lerr, ok )
412
413
414
415 srnamt = 'DPBTF2'
416 infot = 1
417 CALL dpbtf2(
'/', 0, 0, a, 1, info )
418 CALL chkxer(
'DPBTF2', infot, nout, lerr, ok )
419 infot = 2
420 CALL dpbtf2(
'U', -1, 0, a, 1, info )
421 CALL chkxer(
'DPBTF2', infot, nout, lerr, ok )
422 infot = 3
423 CALL dpbtf2(
'U', 1, -1, a, 1, info )
424 CALL chkxer(
'DPBTF2', infot, nout, lerr, ok )
425 infot = 5
426 CALL dpbtf2(
'U', 2, 1, a, 1, info )
427 CALL chkxer(
'DPBTF2', infot, nout, lerr, ok )
428
429
430
431 srnamt = 'DPBTRS'
432 infot = 1
433 CALL dpbtrs(
'/', 0, 0, 0, a, 1, b, 1, info )
434 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
435 infot = 2
436 CALL dpbtrs(
'U', -1, 0, 0, a, 1, b, 1, info )
437 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
438 infot = 3
439 CALL dpbtrs(
'U', 1, -1, 0, a, 1, b, 1, info )
440 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
441 infot = 4
442 CALL dpbtrs(
'U', 0, 0, -1, a, 1, b, 1, info )
443 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
444 infot = 6
445 CALL dpbtrs(
'U', 2, 1, 1, a, 1, b, 1, info )
446 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
447 infot = 8
448 CALL dpbtrs(
'U', 2, 0, 1, a, 1, b, 1, info )
449 CALL chkxer(
'DPBTRS', infot, nout, lerr, ok )
450
451
452
453 srnamt = 'DPBRFS'
454 infot = 1
455 CALL dpbrfs(
'/', 0, 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
456 $ iw, info )
457 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
458 infot = 2
459 CALL dpbrfs(
'U', -1, 0, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
460 $ iw, info )
461 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
462 infot = 3
463 CALL dpbrfs(
'U', 1, -1, 0, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
464 $ iw, info )
465 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
466 infot = 4
467 CALL dpbrfs(
'U', 0, 0, -1, a, 1, af, 1, b, 1, x, 1, r1, r2, w,
468 $ iw, info )
469 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
470 infot = 6
471 CALL dpbrfs(
'U', 2, 1, 1, a, 1, af, 2, b, 2, x, 2, r1, r2, w,
472 $ iw, info )
473 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
474 infot = 8
475 CALL dpbrfs(
'U', 2, 1, 1, a, 2, af, 1, b, 2, x, 2, r1, r2, w,
476 $ iw, info )
477 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
478 infot = 10
479 CALL dpbrfs(
'U', 2, 0, 1, a, 1, af, 1, b, 1, x, 2, r1, r2, w,
480 $ iw, info )
481 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
482 infot = 12
483 CALL dpbrfs(
'U', 2, 0, 1, a, 1, af, 1, b, 2, x, 1, r1, r2, w,
484 $ iw, info )
485 CALL chkxer(
'DPBRFS', infot, nout, lerr, ok )
486
487
488
489 srnamt = 'DPBCON'
490 infot = 1
491 CALL dpbcon(
'/', 0, 0, a, 1, anrm, rcond, w, iw, info )
492 CALL chkxer(
'DPBCON', infot, nout, lerr, ok )
493 infot = 2
494 CALL dpbcon(
'U', -1, 0, a, 1, anrm, rcond, w, iw, info )
495 CALL chkxer(
'DPBCON', infot, nout, lerr, ok )
496 infot = 3
497 CALL dpbcon(
'U', 1, -1, a, 1, anrm, rcond, w, iw, info )
498 CALL chkxer(
'DPBCON', infot, nout, lerr, ok )
499 infot = 5
500 CALL dpbcon(
'U', 2, 1, a, 1, anrm, rcond, w, iw, info )
501 CALL chkxer(
'DPBCON', infot, nout, lerr, ok )
502
503
504
505 srnamt = 'DPBEQU'
506 infot = 1
507 CALL dpbequ(
'/', 0, 0, a, 1, r1, rcond, anrm, info )
508 CALL chkxer(
'DPBEQU', infot, nout, lerr, ok )
509 infot = 2
510 CALL dpbequ(
'U', -1, 0, a, 1, r1, rcond, anrm, info )
511 CALL chkxer(
'DPBEQU', infot, nout, lerr, ok )
512 infot = 3
513 CALL dpbequ(
'U', 1, -1, a, 1, r1, rcond, anrm, info )
514 CALL chkxer(
'DPBEQU', infot, nout, lerr, ok )
515 infot = 5
516 CALL dpbequ(
'U', 2, 1, a, 1, r1, rcond, anrm, info )
517 CALL chkxer(
'DPBEQU', infot, nout, lerr, ok )
518 END IF
519
520
521
522 CALL alaesm( path, ok, nout )
523
524 RETURN
525
526
527
subroutine alaesm(path, ok, nout)
ALAESM
subroutine chkxer(srnamt, infot, nout, lerr, ok)
logical function lsamen(n, ca, cb)
LSAMEN
subroutine dpbcon(uplo, n, kd, ab, ldab, anorm, rcond, work, iwork, info)
DPBCON
subroutine dpbequ(uplo, n, kd, ab, ldab, s, scond, amax, info)
DPBEQU
subroutine dpbrfs(uplo, n, kd, nrhs, ab, ldab, afb, ldafb, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DPBRFS
subroutine dpbtf2(uplo, n, kd, ab, ldab, info)
DPBTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite band matrix (un...
subroutine dpbtrf(uplo, n, kd, ab, ldab, info)
DPBTRF
subroutine dpbtrs(uplo, n, kd, nrhs, ab, ldab, b, ldb, info)
DPBTRS
subroutine dpocon(uplo, n, a, lda, anorm, rcond, work, iwork, info)
DPOCON
subroutine dpoequ(n, a, lda, s, scond, amax, info)
DPOEQU
subroutine dpoequb(n, a, lda, s, scond, amax, info)
DPOEQUB
subroutine dporfs(uplo, n, nrhs, a, lda, af, ldaf, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DPORFS
subroutine dporfsx(uplo, equed, n, nrhs, a, lda, af, ldaf, s, b, ldb, x, ldx, rcond, berr, n_err_bnds, err_bnds_norm, err_bnds_comp, nparams, params, work, iwork, info)
DPORFSX
subroutine dpotf2(uplo, n, a, lda, info)
DPOTF2 computes the Cholesky factorization of a symmetric/Hermitian positive definite matrix (unblock...
subroutine dpotrf(uplo, n, a, lda, info)
DPOTRF
subroutine dpotri(uplo, n, a, lda, info)
DPOTRI
subroutine dpotrs(uplo, n, nrhs, a, lda, b, ldb, info)
DPOTRS
subroutine dppcon(uplo, n, ap, anorm, rcond, work, iwork, info)
DPPCON
subroutine dppequ(uplo, n, ap, s, scond, amax, info)
DPPEQU
subroutine dpprfs(uplo, n, nrhs, ap, afp, b, ldb, x, ldx, ferr, berr, work, iwork, info)
DPPRFS
subroutine dpptrf(uplo, n, ap, info)
DPPTRF
subroutine dpptri(uplo, n, ap, info)
DPPTRI
subroutine dpptrs(uplo, n, nrhs, ap, b, ldb, info)
DPPTRS