00001 SUBROUTINE CERRPO( PATH, NUNIT )
00002
00003
00004
00005
00006
00007
00008 CHARACTER*3 PATH
00009 INTEGER NUNIT
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 INTEGER NMAX
00031 PARAMETER ( NMAX = 4 )
00032
00033
00034 CHARACTER*2 C2
00035 INTEGER I, INFO, J
00036 REAL ANRM, RCOND
00037
00038
00039 REAL R( NMAX ), R1( NMAX ), R2( NMAX )
00040 COMPLEX A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00041 $ W( 2*NMAX ), X( NMAX )
00042
00043
00044 LOGICAL LSAMEN
00045 EXTERNAL LSAMEN
00046
00047
00048 EXTERNAL ALAESM, CHKXER, CPBCON, CPBEQU, CPBRFS, CPBTF2,
00049 $ CPBTRF, CPBTRS, CPOCON, CPOEQU, CPORFS, CPOTF2,
00050 $ CPOTRF, CPOTRI, CPOTRS, CPPCON, CPPEQU, CPPRFS,
00051 $ CPPTRF, CPPTRI, CPPTRS
00052
00053
00054 LOGICAL LERR, OK
00055 CHARACTER*32 SRNAMT
00056 INTEGER INFOT, NOUT
00057
00058
00059 COMMON / INFOC / INFOT, NOUT, OK, LERR
00060 COMMON / SRNAMC / SRNAMT
00061
00062
00063 INTRINSIC CMPLX, REAL
00064
00065
00066
00067 NOUT = NUNIT
00068 WRITE( NOUT, FMT = * )
00069 C2 = PATH( 2: 3 )
00070
00071
00072
00073 DO 20 J = 1, NMAX
00074 DO 10 I = 1, NMAX
00075 A( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00076 AF( I, J ) = CMPLX( 1. / REAL( I+J ), -1. / REAL( I+J ) )
00077 10 CONTINUE
00078 B( J ) = 0.
00079 R1( J ) = 0.
00080 R2( J ) = 0.
00081 W( J ) = 0.
00082 X( J ) = 0.
00083 20 CONTINUE
00084 ANRM = 1.
00085 OK = .TRUE.
00086
00087
00088
00089
00090 IF( LSAMEN( 2, C2, 'PO' ) ) THEN
00091
00092
00093
00094 SRNAMT = 'CPOTRF'
00095 INFOT = 1
00096 CALL CPOTRF( '/', 0, A, 1, INFO )
00097 CALL CHKXER( 'CPOTRF', INFOT, NOUT, LERR, OK )
00098 INFOT = 2
00099 CALL CPOTRF( 'U', -1, A, 1, INFO )
00100 CALL CHKXER( 'CPOTRF', INFOT, NOUT, LERR, OK )
00101 INFOT = 4
00102 CALL CPOTRF( 'U', 2, A, 1, INFO )
00103 CALL CHKXER( 'CPOTRF', INFOT, NOUT, LERR, OK )
00104
00105
00106
00107 SRNAMT = 'CPOTF2'
00108 INFOT = 1
00109 CALL CPOTF2( '/', 0, A, 1, INFO )
00110 CALL CHKXER( 'CPOTF2', INFOT, NOUT, LERR, OK )
00111 INFOT = 2
00112 CALL CPOTF2( 'U', -1, A, 1, INFO )
00113 CALL CHKXER( 'CPOTF2', INFOT, NOUT, LERR, OK )
00114 INFOT = 4
00115 CALL CPOTF2( 'U', 2, A, 1, INFO )
00116 CALL CHKXER( 'CPOTF2', INFOT, NOUT, LERR, OK )
00117
00118
00119
00120 SRNAMT = 'CPOTRI'
00121 INFOT = 1
00122 CALL CPOTRI( '/', 0, A, 1, INFO )
00123 CALL CHKXER( 'CPOTRI', INFOT, NOUT, LERR, OK )
00124 INFOT = 2
00125 CALL CPOTRI( 'U', -1, A, 1, INFO )
00126 CALL CHKXER( 'CPOTRI', INFOT, NOUT, LERR, OK )
00127 INFOT = 4
00128 CALL CPOTRI( 'U', 2, A, 1, INFO )
00129 CALL CHKXER( 'CPOTRI', INFOT, NOUT, LERR, OK )
00130
00131
00132
00133 SRNAMT = 'CPOTRS'
00134 INFOT = 1
00135 CALL CPOTRS( '/', 0, 0, A, 1, B, 1, INFO )
00136 CALL CHKXER( 'CPOTRS', INFOT, NOUT, LERR, OK )
00137 INFOT = 2
00138 CALL CPOTRS( 'U', -1, 0, A, 1, B, 1, INFO )
00139 CALL CHKXER( 'CPOTRS', INFOT, NOUT, LERR, OK )
00140 INFOT = 3
00141 CALL CPOTRS( 'U', 0, -1, A, 1, B, 1, INFO )
00142 CALL CHKXER( 'CPOTRS', INFOT, NOUT, LERR, OK )
00143 INFOT = 5
00144 CALL CPOTRS( 'U', 2, 1, A, 1, B, 2, INFO )
00145 CALL CHKXER( 'CPOTRS', INFOT, NOUT, LERR, OK )
00146 INFOT = 7
00147 CALL CPOTRS( 'U', 2, 1, A, 2, B, 1, INFO )
00148 CALL CHKXER( 'CPOTRS', INFOT, NOUT, LERR, OK )
00149
00150
00151
00152 SRNAMT = 'CPORFS'
00153 INFOT = 1
00154 CALL CPORFS( '/', 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R,
00155 $ INFO )
00156 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00157 INFOT = 2
00158 CALL CPORFS( 'U', -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R,
00159 $ INFO )
00160 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00161 INFOT = 3
00162 CALL CPORFS( 'U', 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W, R,
00163 $ INFO )
00164 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00165 INFOT = 5
00166 CALL CPORFS( 'U', 2, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W, R,
00167 $ INFO )
00168 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00169 INFOT = 7
00170 CALL CPORFS( 'U', 2, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W, R,
00171 $ INFO )
00172 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00173 INFOT = 9
00174 CALL CPORFS( 'U', 2, 1, A, 2, AF, 2, B, 1, X, 2, R1, R2, W, R,
00175 $ INFO )
00176 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00177 INFOT = 11
00178 CALL CPORFS( 'U', 2, 1, A, 2, AF, 2, B, 2, X, 1, R1, R2, W, R,
00179 $ INFO )
00180 CALL CHKXER( 'CPORFS', INFOT, NOUT, LERR, OK )
00181
00182
00183
00184 SRNAMT = 'CPOCON'
00185 INFOT = 1
00186 CALL CPOCON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
00187 CALL CHKXER( 'CPOCON', INFOT, NOUT, LERR, OK )
00188 INFOT = 2
00189 CALL CPOCON( 'U', -1, A, 1, ANRM, RCOND, W, R, INFO )
00190 CALL CHKXER( 'CPOCON', INFOT, NOUT, LERR, OK )
00191 INFOT = 4
00192 CALL CPOCON( 'U', 2, A, 1, ANRM, RCOND, W, R, INFO )
00193 CALL CHKXER( 'CPOCON', INFOT, NOUT, LERR, OK )
00194 INFOT = 5
00195 CALL CPOCON( 'U', 1, A, 1, -ANRM, RCOND, W, R, INFO )
00196 CALL CHKXER( 'CPOCON', INFOT, NOUT, LERR, OK )
00197
00198
00199
00200 SRNAMT = 'CPOEQU'
00201 INFOT = 1
00202 CALL CPOEQU( -1, A, 1, R1, RCOND, ANRM, INFO )
00203 CALL CHKXER( 'CPOEQU', INFOT, NOUT, LERR, OK )
00204 INFOT = 3
00205 CALL CPOEQU( 2, A, 1, R1, RCOND, ANRM, INFO )
00206 CALL CHKXER( 'CPOEQU', INFOT, NOUT, LERR, OK )
00207
00208
00209
00210
00211 ELSE IF( LSAMEN( 2, C2, 'PP' ) ) THEN
00212
00213
00214
00215 SRNAMT = 'CPPTRF'
00216 INFOT = 1
00217 CALL CPPTRF( '/', 0, A, INFO )
00218 CALL CHKXER( 'CPPTRF', INFOT, NOUT, LERR, OK )
00219 INFOT = 2
00220 CALL CPPTRF( 'U', -1, A, INFO )
00221 CALL CHKXER( 'CPPTRF', INFOT, NOUT, LERR, OK )
00222
00223
00224
00225 SRNAMT = 'CPPTRI'
00226 INFOT = 1
00227 CALL CPPTRI( '/', 0, A, INFO )
00228 CALL CHKXER( 'CPPTRI', INFOT, NOUT, LERR, OK )
00229 INFOT = 2
00230 CALL CPPTRI( 'U', -1, A, INFO )
00231 CALL CHKXER( 'CPPTRI', INFOT, NOUT, LERR, OK )
00232
00233
00234
00235 SRNAMT = 'CPPTRS'
00236 INFOT = 1
00237 CALL CPPTRS( '/', 0, 0, A, B, 1, INFO )
00238 CALL CHKXER( 'CPPTRS', INFOT, NOUT, LERR, OK )
00239 INFOT = 2
00240 CALL CPPTRS( 'U', -1, 0, A, B, 1, INFO )
00241 CALL CHKXER( 'CPPTRS', INFOT, NOUT, LERR, OK )
00242 INFOT = 3
00243 CALL CPPTRS( 'U', 0, -1, A, B, 1, INFO )
00244 CALL CHKXER( 'CPPTRS', INFOT, NOUT, LERR, OK )
00245 INFOT = 6
00246 CALL CPPTRS( 'U', 2, 1, A, B, 1, INFO )
00247 CALL CHKXER( 'CPPTRS', INFOT, NOUT, LERR, OK )
00248
00249
00250
00251 SRNAMT = 'CPPRFS'
00252 INFOT = 1
00253 CALL CPPRFS( '/', 0, 0, A, AF, B, 1, X, 1, R1, R2, W, R, INFO )
00254 CALL CHKXER( 'CPPRFS', INFOT, NOUT, LERR, OK )
00255 INFOT = 2
00256 CALL CPPRFS( 'U', -1, 0, A, AF, B, 1, X, 1, R1, R2, W, R,
00257 $ INFO )
00258 CALL CHKXER( 'CPPRFS', INFOT, NOUT, LERR, OK )
00259 INFOT = 3
00260 CALL CPPRFS( 'U', 0, -1, A, AF, B, 1, X, 1, R1, R2, W, R,
00261 $ INFO )
00262 CALL CHKXER( 'CPPRFS', INFOT, NOUT, LERR, OK )
00263 INFOT = 7
00264 CALL CPPRFS( 'U', 2, 1, A, AF, B, 1, X, 2, R1, R2, W, R, INFO )
00265 CALL CHKXER( 'CPPRFS', INFOT, NOUT, LERR, OK )
00266 INFOT = 9
00267 CALL CPPRFS( 'U', 2, 1, A, AF, B, 2, X, 1, R1, R2, W, R, INFO )
00268 CALL CHKXER( 'CPPRFS', INFOT, NOUT, LERR, OK )
00269
00270
00271
00272 SRNAMT = 'CPPCON'
00273 INFOT = 1
00274 CALL CPPCON( '/', 0, A, ANRM, RCOND, W, R, INFO )
00275 CALL CHKXER( 'CPPCON', INFOT, NOUT, LERR, OK )
00276 INFOT = 2
00277 CALL CPPCON( 'U', -1, A, ANRM, RCOND, W, R, INFO )
00278 CALL CHKXER( 'CPPCON', INFOT, NOUT, LERR, OK )
00279 INFOT = 4
00280 CALL CPPCON( 'U', 1, A, -ANRM, RCOND, W, R, INFO )
00281 CALL CHKXER( 'CPPCON', INFOT, NOUT, LERR, OK )
00282
00283
00284
00285 SRNAMT = 'CPPEQU'
00286 INFOT = 1
00287 CALL CPPEQU( '/', 0, A, R1, RCOND, ANRM, INFO )
00288 CALL CHKXER( 'CPPEQU', INFOT, NOUT, LERR, OK )
00289 INFOT = 2
00290 CALL CPPEQU( 'U', -1, A, R1, RCOND, ANRM, INFO )
00291 CALL CHKXER( 'CPPEQU', INFOT, NOUT, LERR, OK )
00292
00293
00294
00295
00296 ELSE IF( LSAMEN( 2, C2, 'PB' ) ) THEN
00297
00298
00299
00300 SRNAMT = 'CPBTRF'
00301 INFOT = 1
00302 CALL CPBTRF( '/', 0, 0, A, 1, INFO )
00303 CALL CHKXER( 'CPBTRF', INFOT, NOUT, LERR, OK )
00304 INFOT = 2
00305 CALL CPBTRF( 'U', -1, 0, A, 1, INFO )
00306 CALL CHKXER( 'CPBTRF', INFOT, NOUT, LERR, OK )
00307 INFOT = 3
00308 CALL CPBTRF( 'U', 1, -1, A, 1, INFO )
00309 CALL CHKXER( 'CPBTRF', INFOT, NOUT, LERR, OK )
00310 INFOT = 5
00311 CALL CPBTRF( 'U', 2, 1, A, 1, INFO )
00312 CALL CHKXER( 'CPBTRF', INFOT, NOUT, LERR, OK )
00313
00314
00315
00316 SRNAMT = 'CPBTF2'
00317 INFOT = 1
00318 CALL CPBTF2( '/', 0, 0, A, 1, INFO )
00319 CALL CHKXER( 'CPBTF2', INFOT, NOUT, LERR, OK )
00320 INFOT = 2
00321 CALL CPBTF2( 'U', -1, 0, A, 1, INFO )
00322 CALL CHKXER( 'CPBTF2', INFOT, NOUT, LERR, OK )
00323 INFOT = 3
00324 CALL CPBTF2( 'U', 1, -1, A, 1, INFO )
00325 CALL CHKXER( 'CPBTF2', INFOT, NOUT, LERR, OK )
00326 INFOT = 5
00327 CALL CPBTF2( 'U', 2, 1, A, 1, INFO )
00328 CALL CHKXER( 'CPBTF2', INFOT, NOUT, LERR, OK )
00329
00330
00331
00332 SRNAMT = 'CPBTRS'
00333 INFOT = 1
00334 CALL CPBTRS( '/', 0, 0, 0, A, 1, B, 1, INFO )
00335 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00336 INFOT = 2
00337 CALL CPBTRS( 'U', -1, 0, 0, A, 1, B, 1, INFO )
00338 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00339 INFOT = 3
00340 CALL CPBTRS( 'U', 1, -1, 0, A, 1, B, 1, INFO )
00341 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00342 INFOT = 4
00343 CALL CPBTRS( 'U', 0, 0, -1, A, 1, B, 1, INFO )
00344 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00345 INFOT = 6
00346 CALL CPBTRS( 'U', 2, 1, 1, A, 1, B, 1, INFO )
00347 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00348 INFOT = 8
00349 CALL CPBTRS( 'U', 2, 0, 1, A, 1, B, 1, INFO )
00350 CALL CHKXER( 'CPBTRS', INFOT, NOUT, LERR, OK )
00351
00352
00353
00354 SRNAMT = 'CPBRFS'
00355 INFOT = 1
00356 CALL CPBRFS( '/', 0, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
00357 $ R, INFO )
00358 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00359 INFOT = 2
00360 CALL CPBRFS( 'U', -1, 0, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
00361 $ R, INFO )
00362 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00363 INFOT = 3
00364 CALL CPBRFS( 'U', 1, -1, 0, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
00365 $ R, INFO )
00366 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00367 INFOT = 4
00368 CALL CPBRFS( 'U', 0, 0, -1, A, 1, AF, 1, B, 1, X, 1, R1, R2, W,
00369 $ R, INFO )
00370 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00371 INFOT = 6
00372 CALL CPBRFS( 'U', 2, 1, 1, A, 1, AF, 2, B, 2, X, 2, R1, R2, W,
00373 $ R, INFO )
00374 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00375 INFOT = 8
00376 CALL CPBRFS( 'U', 2, 1, 1, A, 2, AF, 1, B, 2, X, 2, R1, R2, W,
00377 $ R, INFO )
00378 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00379 INFOT = 10
00380 CALL CPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 1, X, 2, R1, R2, W,
00381 $ R, INFO )
00382 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00383 INFOT = 12
00384 CALL CPBRFS( 'U', 2, 0, 1, A, 1, AF, 1, B, 2, X, 1, R1, R2, W,
00385 $ R, INFO )
00386 CALL CHKXER( 'CPBRFS', INFOT, NOUT, LERR, OK )
00387
00388
00389
00390 SRNAMT = 'CPBCON'
00391 INFOT = 1
00392 CALL CPBCON( '/', 0, 0, A, 1, ANRM, RCOND, W, R, INFO )
00393 CALL CHKXER( 'CPBCON', INFOT, NOUT, LERR, OK )
00394 INFOT = 2
00395 CALL CPBCON( 'U', -1, 0, A, 1, ANRM, RCOND, W, R, INFO )
00396 CALL CHKXER( 'CPBCON', INFOT, NOUT, LERR, OK )
00397 INFOT = 3
00398 CALL CPBCON( 'U', 1, -1, A, 1, ANRM, RCOND, W, R, INFO )
00399 CALL CHKXER( 'CPBCON', INFOT, NOUT, LERR, OK )
00400 INFOT = 5
00401 CALL CPBCON( 'U', 2, 1, A, 1, ANRM, RCOND, W, R, INFO )
00402 CALL CHKXER( 'CPBCON', INFOT, NOUT, LERR, OK )
00403 INFOT = 6
00404 CALL CPBCON( 'U', 1, 0, A, 1, -ANRM, RCOND, W, R, INFO )
00405 CALL CHKXER( 'CPBCON', INFOT, NOUT, LERR, OK )
00406
00407
00408
00409 SRNAMT = 'CPBEQU'
00410 INFOT = 1
00411 CALL CPBEQU( '/', 0, 0, A, 1, R1, RCOND, ANRM, INFO )
00412 CALL CHKXER( 'CPBEQU', INFOT, NOUT, LERR, OK )
00413 INFOT = 2
00414 CALL CPBEQU( 'U', -1, 0, A, 1, R1, RCOND, ANRM, INFO )
00415 CALL CHKXER( 'CPBEQU', INFOT, NOUT, LERR, OK )
00416 INFOT = 3
00417 CALL CPBEQU( 'U', 1, -1, A, 1, R1, RCOND, ANRM, INFO )
00418 CALL CHKXER( 'CPBEQU', INFOT, NOUT, LERR, OK )
00419 INFOT = 5
00420 CALL CPBEQU( 'U', 2, 1, A, 1, R1, RCOND, ANRM, INFO )
00421 CALL CHKXER( 'CPBEQU', INFOT, NOUT, LERR, OK )
00422 END IF
00423
00424
00425
00426 CALL ALAESM( PATH, OK, NOUT )
00427
00428 RETURN
00429
00430
00431
00432 END