00001 SUBROUTINE SLAHD2( IOUNIT, PATH )
00002
00003
00004
00005
00006
00007
00008 CHARACTER*3 PATH
00009 INTEGER IOUNIT
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 LOGICAL CORZ, SORD
00041 CHARACTER*2 C2
00042 INTEGER J
00043
00044
00045 LOGICAL LSAME, LSAMEN
00046 EXTERNAL LSAME, LSAMEN
00047
00048
00049
00050 IF( IOUNIT.LE.0 )
00051 $ RETURN
00052 SORD = LSAME( PATH, 'S' ) .OR. LSAME( PATH, 'D' )
00053 CORZ = LSAME( PATH, 'C' ) .OR. LSAME( PATH, 'Z' )
00054 IF( .NOT.SORD .AND. .NOT.CORZ ) THEN
00055 WRITE( IOUNIT, FMT = 9999 )PATH
00056 END IF
00057 C2 = PATH( 2: 3 )
00058
00059 IF( LSAMEN( 2, C2, 'HS' ) ) THEN
00060 IF( SORD ) THEN
00061
00062
00063
00064 WRITE( IOUNIT, FMT = 9998 )PATH
00065
00066
00067
00068 WRITE( IOUNIT, FMT = 9988 )
00069 WRITE( IOUNIT, FMT = 9987 )
00070 WRITE( IOUNIT, FMT = 9986 )'pairs ', 'pairs ', 'prs.',
00071 $ 'prs.'
00072 WRITE( IOUNIT, FMT = 9985 )
00073
00074
00075
00076 WRITE( IOUNIT, FMT = 9984 )'orthogonal', '''=transpose',
00077 $ ( '''', J = 1, 6 )
00078
00079 ELSE
00080
00081
00082
00083 WRITE( IOUNIT, FMT = 9997 )PATH
00084
00085
00086
00087 WRITE( IOUNIT, FMT = 9988 )
00088 WRITE( IOUNIT, FMT = 9987 )
00089 WRITE( IOUNIT, FMT = 9986 )'e.vals', 'e.vals', 'e.vs',
00090 $ 'e.vs'
00091 WRITE( IOUNIT, FMT = 9985 )
00092
00093
00094
00095 WRITE( IOUNIT, FMT = 9984 )'unitary', '*=conj.transp.',
00096 $ ( '*', J = 1, 6 )
00097 END IF
00098
00099 ELSE IF( LSAMEN( 2, C2, 'ST' ) ) THEN
00100
00101 IF( SORD ) THEN
00102
00103
00104
00105 WRITE( IOUNIT, FMT = 9996 )PATH
00106
00107
00108
00109 WRITE( IOUNIT, FMT = 9983 )
00110 WRITE( IOUNIT, FMT = 9982 )
00111 WRITE( IOUNIT, FMT = 9981 )'Symmetric'
00112
00113
00114
00115 WRITE( IOUNIT, FMT = 9968 )
00116
00117 ELSE
00118
00119
00120
00121 WRITE( IOUNIT, FMT = 9995 )PATH
00122
00123
00124
00125 WRITE( IOUNIT, FMT = 9983 )
00126 WRITE( IOUNIT, FMT = 9982 )
00127 WRITE( IOUNIT, FMT = 9981 )'Hermitian'
00128
00129
00130
00131 WRITE( IOUNIT, FMT = 9967 )
00132 END IF
00133
00134 ELSE IF( LSAMEN( 2, C2, 'SG' ) ) THEN
00135
00136 IF( SORD ) THEN
00137
00138
00139
00140 WRITE( IOUNIT, FMT = 9992 )PATH
00141
00142
00143
00144 WRITE( IOUNIT, FMT = 9980 )
00145 WRITE( IOUNIT, FMT = 9979 )
00146 WRITE( IOUNIT, FMT = 9978 )'Symmetric'
00147
00148
00149
00150 WRITE( IOUNIT, FMT = 9977 )
00151 WRITE( IOUNIT, FMT = 9976 )
00152
00153 ELSE
00154
00155
00156
00157 WRITE( IOUNIT, FMT = 9991 )PATH
00158
00159
00160
00161 WRITE( IOUNIT, FMT = 9980 )
00162 WRITE( IOUNIT, FMT = 9979 )
00163 WRITE( IOUNIT, FMT = 9978 )'Hermitian'
00164
00165
00166
00167 WRITE( IOUNIT, FMT = 9975 )
00168 WRITE( IOUNIT, FMT = 9974 )
00169
00170 END IF
00171
00172 ELSE IF( LSAMEN( 2, C2, 'BD' ) ) THEN
00173
00174 IF( SORD ) THEN
00175
00176
00177
00178 WRITE( IOUNIT, FMT = 9994 )PATH
00179
00180
00181
00182 WRITE( IOUNIT, FMT = 9973 )
00183
00184
00185
00186 WRITE( IOUNIT, FMT = 9972 )'orthogonal'
00187 WRITE( IOUNIT, FMT = 9971 )
00188 ELSE
00189
00190
00191
00192 WRITE( IOUNIT, FMT = 9993 )PATH
00193
00194
00195
00196 WRITE( IOUNIT, FMT = 9973 )
00197
00198
00199
00200 WRITE( IOUNIT, FMT = 9972 )'unitary '
00201 WRITE( IOUNIT, FMT = 9971 )
00202 END IF
00203
00204 ELSE IF( LSAMEN( 2, C2, 'BB' ) ) THEN
00205
00206 IF( SORD ) THEN
00207
00208
00209
00210 WRITE( IOUNIT, FMT = 9990 )PATH
00211
00212
00213
00214 WRITE( IOUNIT, FMT = 9970 )
00215
00216
00217
00218 WRITE( IOUNIT, FMT = 9969 )'orthogonal'
00219 ELSE
00220
00221
00222
00223 WRITE( IOUNIT, FMT = 9989 )PATH
00224
00225
00226
00227 WRITE( IOUNIT, FMT = 9970 )
00228
00229
00230
00231 WRITE( IOUNIT, FMT = 9969 )'unitary '
00232 END IF
00233
00234 ELSE
00235
00236 WRITE( IOUNIT, FMT = 9999 )PATH
00237 RETURN
00238 END IF
00239
00240 RETURN
00241
00242 9999 FORMAT( 1X, A3, ': no header available' )
00243 9998 FORMAT( / 1X, A3, ' -- Real Non-symmetric eigenvalue problem' )
00244 9997 FORMAT( / 1X, A3, ' -- Complex Non-symmetric eigenvalue problem' )
00245 9996 FORMAT( / 1X, A3, ' -- Real Symmetric eigenvalue problem' )
00246 9995 FORMAT( / 1X, A3, ' -- Complex Hermitian eigenvalue problem' )
00247 9994 FORMAT( / 1X, A3, ' -- Real Singular Value Decomposition' )
00248 9993 FORMAT( / 1X, A3, ' -- Complex Singular Value Decomposition' )
00249 9992 FORMAT( / 1X, A3, ' -- Real Symmetric Generalized eigenvalue ',
00250 $ 'problem' )
00251 9991 FORMAT( / 1X, A3, ' -- Complex Hermitian Generalized eigenvalue ',
00252 $ 'problem' )
00253 9990 FORMAT( / 1X, A3, ' -- Real Band reduc. to bidiagonal form' )
00254 9989 FORMAT( / 1X, A3, ' -- Complex Band reduc. to bidiagonal form' )
00255
00256 9988 FORMAT( ' Matrix types (see xCHKHS for details): ' )
00257
00258 9987 FORMAT( / ' Special Matrices:', / ' 1=Zero matrix. ',
00259 $ ' ', ' 5=Diagonal: geometr. spaced entries.',
00260 $ / ' 2=Identity matrix. ', ' 6=Diagona',
00261 $ 'l: clustered entries.', / ' 3=Transposed Jordan block. ',
00262 $ ' ', ' 7=Diagonal: large, evenly spaced.', / ' ',
00263 $ '4=Diagonal: evenly spaced entries. ', ' 8=Diagonal: s',
00264 $ 'mall, evenly spaced.' )
00265 9986 FORMAT( ' Dense, Non-Symmetric Matrices:', / ' 9=Well-cond., ev',
00266 $ 'enly spaced eigenvals.', ' 14=Ill-cond., geomet. spaced e',
00267 $ 'igenals.', / ' 10=Well-cond., geom. spaced eigenvals. ',
00268 $ ' 15=Ill-conditioned, clustered e.vals.', / ' 11=Well-cond',
00269 $ 'itioned, clustered e.vals. ', ' 16=Ill-cond., random comp',
00270 $ 'lex ', A6, / ' 12=Well-cond., random complex ', A6, ' ',
00271 $ ' 17=Ill-cond., large rand. complx ', A4, / ' 13=Ill-condi',
00272 $ 'tioned, evenly spaced. ', ' 18=Ill-cond., small rand.',
00273 $ ' complx ', A4 )
00274 9985 FORMAT( ' 19=Matrix with random O(1) entries. ', ' 21=Matrix ',
00275 $ 'with small random entries.', / ' 20=Matrix with large ran',
00276 $ 'dom entries. ' )
00277 9984 FORMAT( / ' Tests performed: ', '(H is Hessenberg, T is Schur,',
00278 $ ' U and Z are ', A, ',', / 20X, A, ', W is a diagonal matr',
00279 $ 'ix of eigenvalues,', / 20X, 'L and R are the left and rig',
00280 $ 'ht eigenvector matrices)', / ' 1 = | A - U H U', A1, ' |',
00281 $ ' / ( |A| n ulp ) ', ' 2 = | I - U U', A1, ' | / ',
00282 $ '( n ulp )', / ' 3 = | H - Z T Z', A1, ' | / ( |H| n ulp ',
00283 $ ') ', ' 4 = | I - Z Z', A1, ' | / ( n ulp )',
00284 $ / ' 5 = | A - UZ T (UZ)', A1, ' | / ( |A| n ulp ) ',
00285 $ ' 6 = | I - UZ (UZ)', A1, ' | / ( n ulp )', / ' 7 = | T(',
00286 $ 'e.vects.) - T(no e.vects.) | / ( |T| ulp )', / ' 8 = | W',
00287 $ '(e.vects.) - W(no e.vects.) | / ( |W| ulp )', / ' 9 = | ',
00288 $ 'TR - RW | / ( |T| |R| ulp ) ', ' 10 = | LT - WL | / (',
00289 $ ' |T| |L| ulp )', / ' 11= |HX - XW| / (|H| |X| ulp) (inv.',
00290 $ 'it)', ' 12= |YH - WY| / (|H| |Y| ulp) (inv.it)' )
00291
00292
00293
00294 9983 FORMAT( ' Matrix types (see xDRVST for details): ' )
00295
00296 9982 FORMAT( / ' Special Matrices:', / ' 1=Zero matrix. ',
00297 $ ' ', ' 5=Diagonal: clustered entries.', / ' 2=',
00298 $ 'Identity matrix. ', ' 6=Diagonal: lar',
00299 $ 'ge, evenly spaced.', / ' 3=Diagonal: evenly spaced entri',
00300 $ 'es. ', ' 7=Diagonal: small, evenly spaced.', / ' 4=D',
00301 $ 'iagonal: geometr. spaced entries.' )
00302 9981 FORMAT( ' Dense ', A, ' Matrices:', / ' 8=Evenly spaced eigen',
00303 $ 'vals. ', ' 12=Small, evenly spaced eigenvals.',
00304 $ / ' 9=Geometrically spaced eigenvals. ', ' 13=Matrix ',
00305 $ 'with random O(1) entries.', / ' 10=Clustered eigenvalues.',
00306 $ ' ', ' 14=Matrix with large random entries.',
00307 $ / ' 11=Large, evenly spaced eigenvals. ', ' 15=Matrix ',
00308 $ 'with small random entries.' )
00309
00310
00311
00312 9980 FORMAT( ' Matrix types (see xDRVSG for details): ' )
00313
00314 9979 FORMAT( / ' Special Matrices:', / ' 1=Zero matrix. ',
00315 $ ' ', ' 5=Diagonal: clustered entries.', / ' 2=',
00316 $ 'Identity matrix. ', ' 6=Diagonal: lar',
00317 $ 'ge, evenly spaced.', / ' 3=Diagonal: evenly spaced entri',
00318 $ 'es. ', ' 7=Diagonal: small, evenly spaced.', / ' 4=D',
00319 $ 'iagonal: geometr. spaced entries.' )
00320 9978 FORMAT( ' Dense or Banded ', A, ' Matrices: ',
00321 $ / ' 8=Evenly spaced eigenvals. ',
00322 $ ' 15=Matrix with small random entries.',
00323 $ / ' 9=Geometrically spaced eigenvals. ',
00324 $ ' 16=Evenly spaced eigenvals, KA=1, KB=1.',
00325 $ / ' 10=Clustered eigenvalues. ',
00326 $ ' 17=Evenly spaced eigenvals, KA=2, KB=1.',
00327 $ / ' 11=Large, evenly spaced eigenvals. ',
00328 $ ' 18=Evenly spaced eigenvals, KA=2, KB=2.',
00329 $ / ' 12=Small, evenly spaced eigenvals. ',
00330 $ ' 19=Evenly spaced eigenvals, KA=3, KB=1.',
00331 $ / ' 13=Matrix with random O(1) entries. ',
00332 $ ' 20=Evenly spaced eigenvals, KA=3, KB=2.',
00333 $ / ' 14=Matrix with large random entries.',
00334 $ ' 21=Evenly spaced eigenvals, KA=3, KB=3.' )
00335 9977 FORMAT( / ' Tests performed: ',
00336 $ / '( For each pair (A,B), where A is of the given type ',
00337 $ / ' and B is a random well-conditioned matrix. D is ',
00338 $ / ' diagonal, and Z is orthogonal. )',
00339 $ / ' 1 = SSYGV, with ITYPE=1 and UPLO=''U'':',
00340 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00341 $ / ' 2 = SSPGV, with ITYPE=1 and UPLO=''U'':',
00342 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00343 $ / ' 3 = SSBGV, with ITYPE=1 and UPLO=''U'':',
00344 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00345 $ / ' 4 = SSYGV, with ITYPE=1 and UPLO=''L'':',
00346 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00347 $ / ' 5 = SSPGV, with ITYPE=1 and UPLO=''L'':',
00348 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00349 $ / ' 6 = SSBGV, with ITYPE=1 and UPLO=''L'':',
00350 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ' )
00351 9976 FORMAT( ' 7 = SSYGV, with ITYPE=2 and UPLO=''U'':',
00352 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00353 $ / ' 8 = SSPGV, with ITYPE=2 and UPLO=''U'':',
00354 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00355 $ / ' 9 = SSPGV, with ITYPE=2 and UPLO=''L'':',
00356 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00357 $ / '10 = SSPGV, with ITYPE=2 and UPLO=''L'':',
00358 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00359 $ / '11 = SSYGV, with ITYPE=3 and UPLO=''U'':',
00360 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00361 $ / '12 = SSPGV, with ITYPE=3 and UPLO=''U'':',
00362 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00363 $ / '13 = SSYGV, with ITYPE=3 and UPLO=''L'':',
00364 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00365 $ / '14 = SSPGV, with ITYPE=3 and UPLO=''L'':',
00366 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ' )
00367 9975 FORMAT( / ' Tests performed: ',
00368 $ / '( For each pair (A,B), where A is of the given type ',
00369 $ / ' and B is a random well-conditioned matrix. D is ',
00370 $ / ' diagonal, and Z is unitary. )',
00371 $ / ' 1 = CHEGV, with ITYPE=1 and UPLO=''U'':',
00372 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00373 $ / ' 2 = CHPGV, with ITYPE=1 and UPLO=''U'':',
00374 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00375 $ / ' 3 = CHBGV, with ITYPE=1 and UPLO=''U'':',
00376 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00377 $ / ' 4 = CHEGV, with ITYPE=1 and UPLO=''L'':',
00378 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00379 $ / ' 5 = CHPGV, with ITYPE=1 and UPLO=''L'':',
00380 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ',
00381 $ / ' 6 = CHBGV, with ITYPE=1 and UPLO=''L'':',
00382 $ ' | A Z - B Z D | / ( |A| |Z| n ulp ) ' )
00383 9974 FORMAT( ' 7 = CHEGV, with ITYPE=2 and UPLO=''U'':',
00384 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00385 $ / ' 8 = CHPGV, with ITYPE=2 and UPLO=''U'':',
00386 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00387 $ / ' 9 = CHPGV, with ITYPE=2 and UPLO=''L'':',
00388 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00389 $ / '10 = CHPGV, with ITYPE=2 and UPLO=''L'':',
00390 $ ' | A B Z - Z D | / ( |A| |Z| n ulp ) ',
00391 $ / '11 = CHEGV, with ITYPE=3 and UPLO=''U'':',
00392 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00393 $ / '12 = CHPGV, with ITYPE=3 and UPLO=''U'':',
00394 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00395 $ / '13 = CHEGV, with ITYPE=3 and UPLO=''L'':',
00396 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ',
00397 $ / '14 = CHPGV, with ITYPE=3 and UPLO=''L'':',
00398 $ ' | B A Z - Z D | / ( |A| |Z| n ulp ) ' )
00399
00400
00401
00402 9973 FORMAT( ' Matrix types (see xCHKBD for details):',
00403 $ / ' Diagonal matrices:', / ' 1: Zero', 28X,
00404 $ ' 5: Clustered entries', / ' 2: Identity', 24X,
00405 $ ' 6: Large, evenly spaced entries',
00406 $ / ' 3: Evenly spaced entries', 11X,
00407 $ ' 7: Small, evenly spaced entries',
00408 $ / ' 4: Geometrically spaced entries',
00409 $ / ' General matrices:', / ' 8: Evenly spaced sing. vals.',
00410 $ 7X, '12: Small, evenly spaced sing vals',
00411 $ / ' 9: Geometrically spaced sing vals ',
00412 $ '13: Random, O(1) entries', / ' 10: Clustered sing. vals.',
00413 $ 11X, '14: Random, scaled near overflow',
00414 $ / ' 11: Large, evenly spaced sing vals ',
00415 $ '15: Random, scaled near underflow' )
00416
00417 9972 FORMAT( / ' Test ratios: ',
00418 $ '(B: bidiagonal, S: diagonal, Q, P, U, and V: ', A10, / 16X,
00419 $ 'X: m x nrhs, Y = Q'' X, and Z = U'' Y)',
00420 $ / ' 1: norm( A - Q B P'' ) / ( norm(A) max(m,n) ulp )',
00421 $ / ' 2: norm( I - Q'' Q ) / ( m ulp )',
00422 $ / ' 3: norm( I - P'' P ) / ( n ulp )',
00423 $ / ' 4: norm( B - U S V'' ) / ( norm(B) min(m,n) ulp )', /
00424 $ ' 5: norm( Y - U Z ) / ( norm(Z) max(min(m,n),k) ulp )'
00425 $ , / ' 6: norm( I - U'' U ) / ( min(m,n) ulp )',
00426 $ / ' 7: norm( I - V'' V ) / ( min(m,n) ulp )' )
00427 9971 FORMAT( ' 8: Test ordering of S (0 if nondecreasing, 1/ulp ',
00428 $ ' otherwise)', /
00429 $ ' 9: norm( S - S2 ) / ( norm(S) ulp ),',
00430 $ ' where S2 is computed', / 44X,
00431 $ 'without computing U and V''',
00432 $ / ' 10: Sturm sequence test ',
00433 $ '(0 if sing. vals of B within THRESH of S)',
00434 $ / ' 11: norm( A - (QU) S (V'' P'') ) / ',
00435 $ '( norm(A) max(m,n) ulp )', /
00436 $ ' 12: norm( X - (QU) Z ) / ( |X| max(M,k) ulp )',
00437 $ / ' 13: norm( I - (QU)''(QU) ) / ( M ulp )',
00438 $ / ' 14: norm( I - (V'' P'') (P V) ) / ( N ulp )' )
00439
00440
00441
00442 9970 FORMAT( ' Matrix types (see xCHKBB for details):',
00443 $ / ' Diagonal matrices:', / ' 1: Zero', 28X,
00444 $ ' 5: Clustered entries', / ' 2: Identity', 24X,
00445 $ ' 6: Large, evenly spaced entries',
00446 $ / ' 3: Evenly spaced entries', 11X,
00447 $ ' 7: Small, evenly spaced entries',
00448 $ / ' 4: Geometrically spaced entries',
00449 $ / ' General matrices:', / ' 8: Evenly spaced sing. vals.',
00450 $ 7X, '12: Small, evenly spaced sing vals',
00451 $ / ' 9: Geometrically spaced sing vals ',
00452 $ '13: Random, O(1) entries', / ' 10: Clustered sing. vals.',
00453 $ 11X, '14: Random, scaled near overflow',
00454 $ / ' 11: Large, evenly spaced sing vals ',
00455 $ '15: Random, scaled near underflow' )
00456
00457 9969 FORMAT( / ' Test ratios: ', '(B: upper bidiagonal, Q and P: ',
00458 $ A10, / 16X, 'C: m x nrhs, PT = P'', Y = Q'' C)',
00459 $ / ' 1: norm( A - Q B PT ) / ( norm(A) max(m,n) ulp )',
00460 $ / ' 2: norm( I - Q'' Q ) / ( m ulp )',
00461 $ / ' 3: norm( I - PT PT'' ) / ( n ulp )',
00462 $ / ' 4: norm( Y - Q'' C ) / ( norm(Y) max(m,nrhs) ulp )' )
00463 9968 FORMAT( / ' Tests performed: See sdrvst.f' )
00464 9967 FORMAT( / ' Tests performed: See cdrvst.f' )
00465
00466
00467
00468 END