00001 SUBROUTINE SERRED( 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
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040 INTEGER NMAX
00041 REAL ONE, ZERO
00042 PARAMETER ( NMAX = 4, ONE = 1.0E0, ZERO = 0.0E0 )
00043
00044
00045 CHARACTER*2 C2
00046 INTEGER I, IHI, ILO, INFO, J, NT, SDIM
00047 REAL ABNRM
00048
00049
00050 LOGICAL B( NMAX )
00051 INTEGER IW( 2*NMAX )
00052 REAL A( NMAX, NMAX ), R1( NMAX ), R2( NMAX ),
00053 $ S( NMAX ), U( NMAX, NMAX ), VL( NMAX, NMAX ),
00054 $ VR( NMAX, NMAX ), VT( NMAX, NMAX ),
00055 $ W( 4*NMAX ), WI( NMAX ), WR( NMAX )
00056
00057
00058 EXTERNAL CHKXER, SGEES, SGEESX, SGEEV, SGEEVX, SGESDD,
00059 $ SGESVD
00060
00061
00062 LOGICAL LSAMEN, SSLECT
00063 EXTERNAL LSAMEN, SSLECT
00064
00065
00066 LOGICAL SELVAL( 20 )
00067 REAL SELWI( 20 ), SELWR( 20 )
00068
00069
00070 LOGICAL LERR, OK
00071 CHARACTER*32 SRNAMT
00072 INTEGER INFOT, NOUT, SELDIM, SELOPT
00073
00074
00075 COMMON / INFOC / INFOT, NOUT, OK, LERR
00076 COMMON / SRNAMC / SRNAMT
00077 COMMON / SSLCT / SELOPT, SELDIM, SELVAL, SELWR, SELWI
00078
00079
00080
00081 NOUT = NUNIT
00082 WRITE( NOUT, FMT = * )
00083 C2 = PATH( 2: 3 )
00084
00085
00086
00087 DO 20 J = 1, NMAX
00088 DO 10 I = 1, NMAX
00089 A( I, J ) = ZERO
00090 10 CONTINUE
00091 20 CONTINUE
00092 DO 30 I = 1, NMAX
00093 A( I, I ) = ONE
00094 30 CONTINUE
00095 OK = .TRUE.
00096 NT = 0
00097
00098 IF( LSAMEN( 2, C2, 'EV' ) ) THEN
00099
00100
00101
00102 SRNAMT = 'SGEEV '
00103 INFOT = 1
00104 CALL SGEEV( 'X', 'N', 0, A, 1, WR, WI, VL, 1, VR, 1, W, 1,
00105 $ INFO )
00106 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00107 INFOT = 2
00108 CALL SGEEV( 'N', 'X', 0, A, 1, WR, WI, VL, 1, VR, 1, W, 1,
00109 $ INFO )
00110 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00111 INFOT = 3
00112 CALL SGEEV( 'N', 'N', -1, A, 1, WR, WI, VL, 1, VR, 1, W, 1,
00113 $ INFO )
00114 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00115 INFOT = 5
00116 CALL SGEEV( 'N', 'N', 2, A, 1, WR, WI, VL, 1, VR, 1, W, 6,
00117 $ INFO )
00118 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00119 INFOT = 9
00120 CALL SGEEV( 'V', 'N', 2, A, 2, WR, WI, VL, 1, VR, 1, W, 8,
00121 $ INFO )
00122 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00123 INFOT = 11
00124 CALL SGEEV( 'N', 'V', 2, A, 2, WR, WI, VL, 1, VR, 1, W, 8,
00125 $ INFO )
00126 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00127 INFOT = 13
00128 CALL SGEEV( 'V', 'V', 1, A, 1, WR, WI, VL, 1, VR, 1, W, 3,
00129 $ INFO )
00130 CALL CHKXER( 'SGEEV ', INFOT, NOUT, LERR, OK )
00131 NT = NT + 7
00132
00133 ELSE IF( LSAMEN( 2, C2, 'ES' ) ) THEN
00134
00135
00136
00137 SRNAMT = 'SGEES '
00138 INFOT = 1
00139 CALL SGEES( 'X', 'N', SSLECT, 0, A, 1, SDIM, WR, WI, VL, 1, W,
00140 $ 1, B, INFO )
00141 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00142 INFOT = 2
00143 CALL SGEES( 'N', 'X', SSLECT, 0, A, 1, SDIM, WR, WI, VL, 1, W,
00144 $ 1, B, INFO )
00145 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00146 INFOT = 4
00147 CALL SGEES( 'N', 'S', SSLECT, -1, A, 1, SDIM, WR, WI, VL, 1, W,
00148 $ 1, B, INFO )
00149 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00150 INFOT = 6
00151 CALL SGEES( 'N', 'S', SSLECT, 2, A, 1, SDIM, WR, WI, VL, 1, W,
00152 $ 6, B, INFO )
00153 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00154 INFOT = 11
00155 CALL SGEES( 'V', 'S', SSLECT, 2, A, 2, SDIM, WR, WI, VL, 1, W,
00156 $ 6, B, INFO )
00157 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00158 INFOT = 13
00159 CALL SGEES( 'N', 'S', SSLECT, 1, A, 1, SDIM, WR, WI, VL, 1, W,
00160 $ 2, B, INFO )
00161 CALL CHKXER( 'SGEES ', INFOT, NOUT, LERR, OK )
00162 NT = NT + 6
00163
00164 ELSE IF( LSAMEN( 2, C2, 'VX' ) ) THEN
00165
00166
00167
00168 SRNAMT = 'SGEEVX'
00169 INFOT = 1
00170 CALL SGEEVX( 'X', 'N', 'N', 'N', 0, A, 1, WR, WI, VL, 1, VR, 1,
00171 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00172 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00173 INFOT = 2
00174 CALL SGEEVX( 'N', 'X', 'N', 'N', 0, A, 1, WR, WI, VL, 1, VR, 1,
00175 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00176 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00177 INFOT = 3
00178 CALL SGEEVX( 'N', 'N', 'X', 'N', 0, A, 1, WR, WI, VL, 1, VR, 1,
00179 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00180 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00181 INFOT = 4
00182 CALL SGEEVX( 'N', 'N', 'N', 'X', 0, A, 1, WR, WI, VL, 1, VR, 1,
00183 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00184 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00185 INFOT = 5
00186 CALL SGEEVX( 'N', 'N', 'N', 'N', -1, A, 1, WR, WI, VL, 1, VR,
00187 $ 1, ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00188 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00189 INFOT = 7
00190 CALL SGEEVX( 'N', 'N', 'N', 'N', 2, A, 1, WR, WI, VL, 1, VR, 1,
00191 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00192 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00193 INFOT = 11
00194 CALL SGEEVX( 'N', 'V', 'N', 'N', 2, A, 2, WR, WI, VL, 1, VR, 1,
00195 $ ILO, IHI, S, ABNRM, R1, R2, W, 6, IW, INFO )
00196 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00197 INFOT = 13
00198 CALL SGEEVX( 'N', 'N', 'V', 'N', 2, A, 2, WR, WI, VL, 1, VR, 1,
00199 $ ILO, IHI, S, ABNRM, R1, R2, W, 6, IW, INFO )
00200 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00201 INFOT = 21
00202 CALL SGEEVX( 'N', 'N', 'N', 'N', 1, A, 1, WR, WI, VL, 1, VR, 1,
00203 $ ILO, IHI, S, ABNRM, R1, R2, W, 1, IW, INFO )
00204 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00205 INFOT = 21
00206 CALL SGEEVX( 'N', 'V', 'N', 'N', 1, A, 1, WR, WI, VL, 1, VR, 1,
00207 $ ILO, IHI, S, ABNRM, R1, R2, W, 2, IW, INFO )
00208 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00209 INFOT = 21
00210 CALL SGEEVX( 'N', 'N', 'V', 'V', 1, A, 1, WR, WI, VL, 1, VR, 1,
00211 $ ILO, IHI, S, ABNRM, R1, R2, W, 3, IW, INFO )
00212 CALL CHKXER( 'SGEEVX', INFOT, NOUT, LERR, OK )
00213 NT = NT + 11
00214
00215 ELSE IF( LSAMEN( 2, C2, 'SX' ) ) THEN
00216
00217
00218
00219 SRNAMT = 'SGEESX'
00220 INFOT = 1
00221 CALL SGEESX( 'X', 'N', SSLECT, 'N', 0, A, 1, SDIM, WR, WI, VL,
00222 $ 1, R1( 1 ), R2( 1 ), W, 1, IW, 1, B, INFO )
00223 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00224 INFOT = 2
00225 CALL SGEESX( 'N', 'X', SSLECT, 'N', 0, A, 1, SDIM, WR, WI, VL,
00226 $ 1, R1( 1 ), R2( 1 ), W, 1, IW, 1, B, INFO )
00227 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00228 INFOT = 4
00229 CALL SGEESX( 'N', 'N', SSLECT, 'X', 0, A, 1, SDIM, WR, WI, VL,
00230 $ 1, R1( 1 ), R2( 1 ), W, 1, IW, 1, B, INFO )
00231 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00232 INFOT = 5
00233 CALL SGEESX( 'N', 'N', SSLECT, 'N', -1, A, 1, SDIM, WR, WI, VL,
00234 $ 1, R1( 1 ), R2( 1 ), W, 1, IW, 1, B, INFO )
00235 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00236 INFOT = 7
00237 CALL SGEESX( 'N', 'N', SSLECT, 'N', 2, A, 1, SDIM, WR, WI, VL,
00238 $ 1, R1( 1 ), R2( 1 ), W, 6, IW, 1, B, INFO )
00239 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00240 INFOT = 12
00241 CALL SGEESX( 'V', 'N', SSLECT, 'N', 2, A, 2, SDIM, WR, WI, VL,
00242 $ 1, R1( 1 ), R2( 1 ), W, 6, IW, 1, B, INFO )
00243 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00244 INFOT = 16
00245 CALL SGEESX( 'N', 'N', SSLECT, 'N', 1, A, 1, SDIM, WR, WI, VL,
00246 $ 1, R1( 1 ), R2( 1 ), W, 2, IW, 1, B, INFO )
00247 CALL CHKXER( 'SGEESX', INFOT, NOUT, LERR, OK )
00248 NT = NT + 7
00249
00250 ELSE IF( LSAMEN( 2, C2, 'BD' ) ) THEN
00251
00252
00253
00254 SRNAMT = 'SGESVD'
00255 INFOT = 1
00256 CALL SGESVD( 'X', 'N', 0, 0, A, 1, S, U, 1, VT, 1, W, 1, INFO )
00257 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00258 INFOT = 2
00259 CALL SGESVD( 'N', 'X', 0, 0, A, 1, S, U, 1, VT, 1, W, 1, INFO )
00260 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00261 INFOT = 2
00262 CALL SGESVD( 'O', 'O', 0, 0, A, 1, S, U, 1, VT, 1, W, 1, INFO )
00263 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00264 INFOT = 3
00265 CALL SGESVD( 'N', 'N', -1, 0, A, 1, S, U, 1, VT, 1, W, 1,
00266 $ INFO )
00267 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00268 INFOT = 4
00269 CALL SGESVD( 'N', 'N', 0, -1, A, 1, S, U, 1, VT, 1, W, 1,
00270 $ INFO )
00271 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00272 INFOT = 6
00273 CALL SGESVD( 'N', 'N', 2, 1, A, 1, S, U, 1, VT, 1, W, 5, INFO )
00274 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00275 INFOT = 9
00276 CALL SGESVD( 'A', 'N', 2, 1, A, 2, S, U, 1, VT, 1, W, 5, INFO )
00277 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00278 INFOT = 11
00279 CALL SGESVD( 'N', 'A', 1, 2, A, 1, S, U, 1, VT, 1, W, 5, INFO )
00280 CALL CHKXER( 'SGESVD', INFOT, NOUT, LERR, OK )
00281 NT = NT + 8
00282
00283
00284
00285 SRNAMT = 'SGESDD'
00286 INFOT = 1
00287 CALL SGESDD( 'X', 0, 0, A, 1, S, U, 1, VT, 1, W, 1, IW, INFO )
00288 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00289 INFOT = 2
00290 CALL SGESDD( 'N', -1, 0, A, 1, S, U, 1, VT, 1, W, 1, IW, INFO )
00291 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00292 INFOT = 3
00293 CALL SGESDD( 'N', 0, -1, A, 1, S, U, 1, VT, 1, W, 1, IW, INFO )
00294 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00295 INFOT = 5
00296 CALL SGESDD( 'N', 2, 1, A, 1, S, U, 1, VT, 1, W, 5, IW, INFO )
00297 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00298 INFOT = 8
00299 CALL SGESDD( 'A', 2, 1, A, 2, S, U, 1, VT, 1, W, 5, IW, INFO )
00300 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00301 INFOT = 10
00302 CALL SGESDD( 'A', 1, 2, A, 1, S, U, 1, VT, 1, W, 5, IW, INFO )
00303 CALL CHKXER( 'SGESDD', INFOT, NOUT, LERR, OK )
00304 NT = NT + 6
00305 END IF
00306
00307
00308
00309 IF( .NOT.LSAMEN( 2, C2, 'BD' ) ) THEN
00310 IF( OK ) THEN
00311 WRITE( NOUT, FMT = 9999 )PATH, NT
00312 ELSE
00313 WRITE( NOUT, FMT = 9998 )PATH
00314 END IF
00315 END IF
00316
00317 9999 FORMAT( 1X, A3, ' routines passed the tests of the error exits (',
00318 $ I3, ' tests done)' )
00319 9998 FORMAT( ' *** ', A3, ' routines failed the tests of the error ex',
00320 $ 'its ***' )
00321 RETURN
00322
00323
00324
00325 END