00001 SUBROUTINE CERRGE( 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, CCOND, RCOND
00037
00038
00039 INTEGER IP( NMAX )
00040 REAL R( NMAX ), R1( NMAX ), R2( NMAX )
00041 COMPLEX A( NMAX, NMAX ), AF( NMAX, NMAX ), B( NMAX ),
00042 $ W( 2*NMAX ), X( NMAX )
00043
00044
00045 LOGICAL LSAMEN
00046 EXTERNAL LSAMEN
00047
00048
00049 EXTERNAL ALAESM, CGBCON, CGBEQU, CGBRFS, CGBTF2, CGBTRF,
00050 $ CGBTRS, CGECON, CGEEQU, CGERFS, CGETF2, CGETRF,
00051 $ CGETRI, CGETRS, CHKXER
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 IP( J ) = J
00084 20 CONTINUE
00085 OK = .TRUE.
00086
00087
00088
00089
00090 IF( LSAMEN( 2, C2, 'GE' ) ) THEN
00091
00092
00093
00094 SRNAMT = 'CGETRF'
00095 INFOT = 1
00096 CALL CGETRF( -1, 0, A, 1, IP, INFO )
00097 CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
00098 INFOT = 2
00099 CALL CGETRF( 0, -1, A, 1, IP, INFO )
00100 CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
00101 INFOT = 4
00102 CALL CGETRF( 2, 1, A, 1, IP, INFO )
00103 CALL CHKXER( 'CGETRF', INFOT, NOUT, LERR, OK )
00104
00105
00106
00107 SRNAMT = 'CGETF2'
00108 INFOT = 1
00109 CALL CGETF2( -1, 0, A, 1, IP, INFO )
00110 CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
00111 INFOT = 2
00112 CALL CGETF2( 0, -1, A, 1, IP, INFO )
00113 CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
00114 INFOT = 4
00115 CALL CGETF2( 2, 1, A, 1, IP, INFO )
00116 CALL CHKXER( 'CGETF2', INFOT, NOUT, LERR, OK )
00117
00118
00119
00120 SRNAMT = 'CGETRI'
00121 INFOT = 1
00122 CALL CGETRI( -1, A, 1, IP, W, 1, INFO )
00123 CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
00124 INFOT = 3
00125 CALL CGETRI( 2, A, 1, IP, W, 2, INFO )
00126 CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
00127 INFOT = 6
00128 CALL CGETRI( 2, A, 2, IP, W, 1, INFO )
00129 CALL CHKXER( 'CGETRI', INFOT, NOUT, LERR, OK )
00130
00131
00132
00133 SRNAMT = 'CGETRS'
00134 INFOT = 1
00135 CALL CGETRS( '/', 0, 0, A, 1, IP, B, 1, INFO )
00136 CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
00137 INFOT = 2
00138 CALL CGETRS( 'N', -1, 0, A, 1, IP, B, 1, INFO )
00139 CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
00140 INFOT = 3
00141 CALL CGETRS( 'N', 0, -1, A, 1, IP, B, 1, INFO )
00142 CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
00143 INFOT = 5
00144 CALL CGETRS( 'N', 2, 1, A, 1, IP, B, 2, INFO )
00145 CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
00146 INFOT = 8
00147 CALL CGETRS( 'N', 2, 1, A, 2, IP, B, 1, INFO )
00148 CALL CHKXER( 'CGETRS', INFOT, NOUT, LERR, OK )
00149
00150
00151
00152 SRNAMT = 'CGERFS'
00153 INFOT = 1
00154 CALL CGERFS( '/', 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2, W,
00155 $ R, INFO )
00156 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00157 INFOT = 2
00158 CALL CGERFS( 'N', -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00159 $ W, R, INFO )
00160 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00161 INFOT = 3
00162 CALL CGERFS( 'N', 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1, R2,
00163 $ W, R, INFO )
00164 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00165 INFOT = 5
00166 CALL CGERFS( 'N', 2, 1, A, 1, AF, 2, IP, B, 2, X, 2, R1, R2, W,
00167 $ R, INFO )
00168 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00169 INFOT = 7
00170 CALL CGERFS( 'N', 2, 1, A, 2, AF, 1, IP, B, 2, X, 2, R1, R2, W,
00171 $ R, INFO )
00172 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00173 INFOT = 10
00174 CALL CGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 1, X, 2, R1, R2, W,
00175 $ R, INFO )
00176 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00177 INFOT = 12
00178 CALL CGERFS( 'N', 2, 1, A, 2, AF, 2, IP, B, 2, X, 1, R1, R2, W,
00179 $ R, INFO )
00180 CALL CHKXER( 'CGERFS', INFOT, NOUT, LERR, OK )
00181
00182
00183
00184 SRNAMT = 'CGECON'
00185 INFOT = 1
00186 CALL CGECON( '/', 0, A, 1, ANRM, RCOND, W, R, INFO )
00187 CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
00188 INFOT = 2
00189 CALL CGECON( '1', -1, A, 1, ANRM, RCOND, W, R, INFO )
00190 CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
00191 INFOT = 4
00192 CALL CGECON( '1', 2, A, 1, ANRM, RCOND, W, R, INFO )
00193 CALL CHKXER( 'CGECON', INFOT, NOUT, LERR, OK )
00194
00195
00196
00197 SRNAMT = 'CGEEQU'
00198 INFOT = 1
00199 CALL CGEEQU( -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
00200 CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
00201 INFOT = 2
00202 CALL CGEEQU( 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
00203 CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
00204 INFOT = 4
00205 CALL CGEEQU( 2, 2, A, 1, R1, R2, RCOND, CCOND, ANRM, INFO )
00206 CALL CHKXER( 'CGEEQU', INFOT, NOUT, LERR, OK )
00207
00208
00209
00210
00211 ELSE IF( LSAMEN( 2, C2, 'GB' ) ) THEN
00212
00213
00214
00215 SRNAMT = 'CGBTRF'
00216 INFOT = 1
00217 CALL CGBTRF( -1, 0, 0, 0, A, 1, IP, INFO )
00218 CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
00219 INFOT = 2
00220 CALL CGBTRF( 0, -1, 0, 0, A, 1, IP, INFO )
00221 CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
00222 INFOT = 3
00223 CALL CGBTRF( 1, 1, -1, 0, A, 1, IP, INFO )
00224 CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
00225 INFOT = 4
00226 CALL CGBTRF( 1, 1, 0, -1, A, 1, IP, INFO )
00227 CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
00228 INFOT = 6
00229 CALL CGBTRF( 2, 2, 1, 1, A, 3, IP, INFO )
00230 CALL CHKXER( 'CGBTRF', INFOT, NOUT, LERR, OK )
00231
00232
00233
00234 SRNAMT = 'CGBTF2'
00235 INFOT = 1
00236 CALL CGBTF2( -1, 0, 0, 0, A, 1, IP, INFO )
00237 CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
00238 INFOT = 2
00239 CALL CGBTF2( 0, -1, 0, 0, A, 1, IP, INFO )
00240 CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
00241 INFOT = 3
00242 CALL CGBTF2( 1, 1, -1, 0, A, 1, IP, INFO )
00243 CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
00244 INFOT = 4
00245 CALL CGBTF2( 1, 1, 0, -1, A, 1, IP, INFO )
00246 CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
00247 INFOT = 6
00248 CALL CGBTF2( 2, 2, 1, 1, A, 3, IP, INFO )
00249 CALL CHKXER( 'CGBTF2', INFOT, NOUT, LERR, OK )
00250
00251
00252
00253 SRNAMT = 'CGBTRS'
00254 INFOT = 1
00255 CALL CGBTRS( '/', 0, 0, 0, 1, A, 1, IP, B, 1, INFO )
00256 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00257 INFOT = 2
00258 CALL CGBTRS( 'N', -1, 0, 0, 1, A, 1, IP, B, 1, INFO )
00259 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00260 INFOT = 3
00261 CALL CGBTRS( 'N', 1, -1, 0, 1, A, 1, IP, B, 1, INFO )
00262 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00263 INFOT = 4
00264 CALL CGBTRS( 'N', 1, 0, -1, 1, A, 1, IP, B, 1, INFO )
00265 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00266 INFOT = 5
00267 CALL CGBTRS( 'N', 1, 0, 0, -1, A, 1, IP, B, 1, INFO )
00268 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00269 INFOT = 7
00270 CALL CGBTRS( 'N', 2, 1, 1, 1, A, 3, IP, B, 2, INFO )
00271 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00272 INFOT = 10
00273 CALL CGBTRS( 'N', 2, 0, 0, 1, A, 1, IP, B, 1, INFO )
00274 CALL CHKXER( 'CGBTRS', INFOT, NOUT, LERR, OK )
00275
00276
00277
00278 SRNAMT = 'CGBRFS'
00279 INFOT = 1
00280 CALL CGBRFS( '/', 0, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
00281 $ R2, W, R, INFO )
00282 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00283 INFOT = 2
00284 CALL CGBRFS( 'N', -1, 0, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
00285 $ R2, W, R, INFO )
00286 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00287 INFOT = 3
00288 CALL CGBRFS( 'N', 1, -1, 0, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
00289 $ R2, W, R, INFO )
00290 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00291 INFOT = 4
00292 CALL CGBRFS( 'N', 1, 0, -1, 0, A, 1, AF, 1, IP, B, 1, X, 1, R1,
00293 $ R2, W, R, INFO )
00294 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00295 INFOT = 5
00296 CALL CGBRFS( 'N', 1, 0, 0, -1, A, 1, AF, 1, IP, B, 1, X, 1, R1,
00297 $ R2, W, R, INFO )
00298 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00299 INFOT = 7
00300 CALL CGBRFS( 'N', 2, 1, 1, 1, A, 2, AF, 4, IP, B, 2, X, 2, R1,
00301 $ R2, W, R, INFO )
00302 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00303 INFOT = 9
00304 CALL CGBRFS( 'N', 2, 1, 1, 1, A, 3, AF, 3, IP, B, 2, X, 2, R1,
00305 $ R2, W, R, INFO )
00306 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00307 INFOT = 12
00308 CALL CGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 1, X, 2, R1,
00309 $ R2, W, R, INFO )
00310 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00311 INFOT = 14
00312 CALL CGBRFS( 'N', 2, 0, 0, 1, A, 1, AF, 1, IP, B, 2, X, 1, R1,
00313 $ R2, W, R, INFO )
00314 CALL CHKXER( 'CGBRFS', INFOT, NOUT, LERR, OK )
00315
00316
00317
00318 SRNAMT = 'CGBCON'
00319 INFOT = 1
00320 CALL CGBCON( '/', 0, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
00321 CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
00322 INFOT = 2
00323 CALL CGBCON( '1', -1, 0, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
00324 CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
00325 INFOT = 3
00326 CALL CGBCON( '1', 1, -1, 0, A, 1, IP, ANRM, RCOND, W, R, INFO )
00327 CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
00328 INFOT = 4
00329 CALL CGBCON( '1', 1, 0, -1, A, 1, IP, ANRM, RCOND, W, R, INFO )
00330 CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
00331 INFOT = 6
00332 CALL CGBCON( '1', 2, 1, 1, A, 3, IP, ANRM, RCOND, W, R, INFO )
00333 CALL CHKXER( 'CGBCON', INFOT, NOUT, LERR, OK )
00334
00335
00336
00337 SRNAMT = 'CGBEQU'
00338 INFOT = 1
00339 CALL CGBEQU( -1, 0, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
00340 $ INFO )
00341 CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
00342 INFOT = 2
00343 CALL CGBEQU( 0, -1, 0, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
00344 $ INFO )
00345 CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
00346 INFOT = 3
00347 CALL CGBEQU( 1, 1, -1, 0, A, 1, R1, R2, RCOND, CCOND, ANRM,
00348 $ INFO )
00349 CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
00350 INFOT = 4
00351 CALL CGBEQU( 1, 1, 0, -1, A, 1, R1, R2, RCOND, CCOND, ANRM,
00352 $ INFO )
00353 CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
00354 INFOT = 6
00355 CALL CGBEQU( 2, 2, 1, 1, A, 2, R1, R2, RCOND, CCOND, ANRM,
00356 $ INFO )
00357 CALL CHKXER( 'CGBEQU', INFOT, NOUT, LERR, OK )
00358 END IF
00359
00360
00361
00362 CALL ALAESM( PATH, OK, NOUT )
00363
00364 RETURN
00365
00366
00367
00368 END