1*> \brief \b ALADHD 2* 3* =========== DOCUMENTATION =========== 4* 5* Online html documentation available at 6* http://www.netlib.org/lapack/explore-html/ 7* 8* Definition: 9* =========== 10* 11* SUBROUTINE ALADHD( IOUNIT, PATH ) 12* 13* .. Scalar Arguments .. 14* CHARACTER*3 PATH 15* INTEGER IOUNIT 16* .. 17* 18* 19*> \par Purpose: 20* ============= 21*> 22*> \verbatim 23*> 24*> ALADHD prints header information for the driver routines test paths. 25*> \endverbatim 26* 27* Arguments: 28* ========== 29* 30*> \param[in] IOUNIT 31*> \verbatim 32*> IOUNIT is INTEGER 33*> The unit number to which the header information should be 34*> printed. 35*> \endverbatim 36*> 37*> \param[in] PATH 38*> \verbatim 39*> PATH is CHARACTER*3 40*> The name of the path for which the header information is to 41*> be printed. Current paths are 42*> _GE: General matrices 43*> _GB: General band 44*> _GT: General Tridiagonal 45*> _PO: Symmetric or Hermitian positive definite 46*> _PS: Symmetric or Hermitian positive semi-definite 47*> _PP: Symmetric or Hermitian positive definite packed 48*> _PB: Symmetric or Hermitian positive definite band 49*> _PT: Symmetric or Hermitian positive definite tridiagonal 50*> _SY: Symmetric indefinite, 51*> with partial (Bunch-Kaufman) pivoting 52*> _SR: Symmetric indefinite, 53*> with rook (bounded Bunch-Kaufman) pivoting 54*> _SK: Symmetric indefinite, 55*> with rook (bounded Bunch-Kaufman) pivoting 56*> ( new storage format for factors: 57*> L and diagonal of D is stored in A, 58*> subdiagonal of D is stored in E ) 59*> _SP: Symmetric indefinite packed, 60*> with partial (Bunch-Kaufman) pivoting 61*> _HA: (complex) Hermitian , 62*> Assen Algorithm 63*> _HE: (complex) Hermitian indefinite, 64*> with partial (Bunch-Kaufman) pivoting 65*> _HR: (complex) Hermitian indefinite, 66*> with rook (bounded Bunch-Kaufman) pivoting 67*> _HK: (complex) Hermitian indefinite, 68*> with rook (bounded Bunch-Kaufman) pivoting 69*> ( new storage format for factors: 70*> L and diagonal of D is stored in A, 71*> subdiagonal of D is stored in E ) 72*> _HP: (complex) Hermitian indefinite packed, 73*> with partial (Bunch-Kaufman) pivoting 74*> The first character must be one of S, D, C, or Z (C or Z only 75*> if complex). 76*> \endverbatim 77* 78* Authors: 79* ======== 80* 81*> \author Univ. of Tennessee 82*> \author Univ. of California Berkeley 83*> \author Univ. of Colorado Denver 84*> \author NAG Ltd. 85* 86*> \ingroup aux_lin 87* 88* ===================================================================== 89 SUBROUTINE ALADHD( IOUNIT, PATH ) 90* 91* -- LAPACK test routine -- 92* -- LAPACK is a software package provided by Univ. of Tennessee, -- 93* -- Univ. of California Berkeley, Univ. of Colorado Denver and NAG Ltd..-- 94* 95* .. Scalar Arguments .. 96 CHARACTER*3 PATH 97 INTEGER IOUNIT 98* .. 99* 100* ===================================================================== 101* 102* .. Local Scalars .. 103 LOGICAL CORZ, SORD 104 CHARACTER C1, C3 105 CHARACTER*2 P2 106 CHARACTER*9 SYM 107* .. 108* .. External Functions .. 109 LOGICAL LSAME, LSAMEN 110 EXTERNAL LSAME, LSAMEN 111* .. 112* .. Executable Statements .. 113* 114 IF( IOUNIT.LE.0 ) 115 $ RETURN 116 C1 = PATH( 1: 1 ) 117 C3 = PATH( 3: 3 ) 118 P2 = PATH( 2: 3 ) 119 SORD = LSAME( C1, 'S' ) .OR. LSAME( C1, 'D' ) 120 CORZ = LSAME( C1, 'C' ) .OR. LSAME( C1, 'Z' ) 121 IF( .NOT.( SORD .OR. CORZ ) ) 122 $ RETURN 123* 124 IF( LSAMEN( 2, P2, 'GE' ) ) THEN 125* 126* GE: General dense 127* 128 WRITE( IOUNIT, FMT = 9999 )PATH 129 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 130 WRITE( IOUNIT, FMT = 9989 ) 131 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 132 WRITE( IOUNIT, FMT = 9981 )1 133 WRITE( IOUNIT, FMT = 9980 )2 134 WRITE( IOUNIT, FMT = 9979 )3 135 WRITE( IOUNIT, FMT = 9978 )4 136 WRITE( IOUNIT, FMT = 9977 )5 137 WRITE( IOUNIT, FMT = 9976 )6 138 WRITE( IOUNIT, FMT = 9972 )7 139 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 140* 141 ELSE IF( LSAMEN( 2, P2, 'GB' ) ) THEN 142* 143* GB: General band 144* 145 WRITE( IOUNIT, FMT = 9998 )PATH 146 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 147 WRITE( IOUNIT, FMT = 9988 ) 148 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 149 WRITE( IOUNIT, FMT = 9981 )1 150 WRITE( IOUNIT, FMT = 9980 )2 151 WRITE( IOUNIT, FMT = 9979 )3 152 WRITE( IOUNIT, FMT = 9978 )4 153 WRITE( IOUNIT, FMT = 9977 )5 154 WRITE( IOUNIT, FMT = 9976 )6 155 WRITE( IOUNIT, FMT = 9972 )7 156 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 157* 158 ELSE IF( LSAMEN( 2, P2, 'GT' ) ) THEN 159* 160* GT: General tridiagonal 161* 162 WRITE( IOUNIT, FMT = 9997 )PATH 163 WRITE( IOUNIT, FMT = 9987 ) 164 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 165 WRITE( IOUNIT, FMT = 9981 )1 166 WRITE( IOUNIT, FMT = 9980 )2 167 WRITE( IOUNIT, FMT = 9979 )3 168 WRITE( IOUNIT, FMT = 9978 )4 169 WRITE( IOUNIT, FMT = 9977 )5 170 WRITE( IOUNIT, FMT = 9976 )6 171 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 172* 173 ELSE IF( LSAMEN( 2, P2, 'PO' ) .OR. LSAMEN( 2, P2, 'PP' ) 174 $ .OR. LSAMEN( 2, P2, 'PS' ) ) THEN 175* 176* PO: Positive definite full 177* PS: Positive definite full 178* PP: Positive definite packed 179* 180 IF( SORD ) THEN 181 SYM = 'Symmetric' 182 ELSE 183 SYM = 'Hermitian' 184 END IF 185 IF( LSAME( C3, 'O' ) ) THEN 186 WRITE( IOUNIT, FMT = 9996 )PATH, SYM 187 ELSE 188 WRITE( IOUNIT, FMT = 9995 )PATH, SYM 189 END IF 190 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 191 WRITE( IOUNIT, FMT = 9985 )PATH 192 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 193 WRITE( IOUNIT, FMT = 9975 )1 194 WRITE( IOUNIT, FMT = 9980 )2 195 WRITE( IOUNIT, FMT = 9979 )3 196 WRITE( IOUNIT, FMT = 9978 )4 197 WRITE( IOUNIT, FMT = 9977 )5 198 WRITE( IOUNIT, FMT = 9976 )6 199 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 200* 201 ELSE IF( LSAMEN( 2, P2, 'PB' ) ) THEN 202* 203* PB: Positive definite band 204* 205 IF( SORD ) THEN 206 WRITE( IOUNIT, FMT = 9994 )PATH, 'Symmetric' 207 ELSE 208 WRITE( IOUNIT, FMT = 9994 )PATH, 'Hermitian' 209 END IF 210 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 211 WRITE( IOUNIT, FMT = 9984 )PATH 212 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 213 WRITE( IOUNIT, FMT = 9975 )1 214 WRITE( IOUNIT, FMT = 9980 )2 215 WRITE( IOUNIT, FMT = 9979 )3 216 WRITE( IOUNIT, FMT = 9978 )4 217 WRITE( IOUNIT, FMT = 9977 )5 218 WRITE( IOUNIT, FMT = 9976 )6 219 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 220* 221 ELSE IF( LSAMEN( 2, P2, 'PT' ) ) THEN 222* 223* PT: Positive definite tridiagonal 224* 225 IF( SORD ) THEN 226 WRITE( IOUNIT, FMT = 9993 )PATH, 'Symmetric' 227 ELSE 228 WRITE( IOUNIT, FMT = 9993 )PATH, 'Hermitian' 229 END IF 230 WRITE( IOUNIT, FMT = 9986 ) 231 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 232 WRITE( IOUNIT, FMT = 9973 )1 233 WRITE( IOUNIT, FMT = 9980 )2 234 WRITE( IOUNIT, FMT = 9979 )3 235 WRITE( IOUNIT, FMT = 9978 )4 236 WRITE( IOUNIT, FMT = 9977 )5 237 WRITE( IOUNIT, FMT = 9976 )6 238 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 239* 240 ELSE IF( LSAMEN( 2, P2, 'SY' ) .OR. LSAMEN( 2, P2, 'SP' ) ) THEN 241* 242* SY: Symmetric indefinite full 243* with partial (Bunch-Kaufman) pivoting algorithm 244* SP: Symmetric indefinite packed 245* with partial (Bunch-Kaufman) pivoting algorithm 246* 247 IF( LSAME( C3, 'Y' ) ) THEN 248 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 249 ELSE 250 WRITE( IOUNIT, FMT = 9991 )PATH, 'Symmetric' 251 END IF 252 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 253 IF( SORD ) THEN 254 WRITE( IOUNIT, FMT = 9983 ) 255 ELSE 256 WRITE( IOUNIT, FMT = 9982 ) 257 END IF 258 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 259 WRITE( IOUNIT, FMT = 9974 )1 260 WRITE( IOUNIT, FMT = 9980 )2 261 WRITE( IOUNIT, FMT = 9979 )3 262 WRITE( IOUNIT, FMT = 9977 )4 263 WRITE( IOUNIT, FMT = 9978 )5 264 WRITE( IOUNIT, FMT = 9976 )6 265 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 266* 267 ELSE IF( LSAMEN( 2, P2, 'SR' ) .OR. LSAMEN( 2, P2, 'SK') ) THEN 268* 269* SR: Symmetric indefinite full, 270* with rook (bounded Bunch-Kaufman) pivoting algorithm 271* 272* SK: Symmetric indefinite full, 273* with rook (bounded Bunch-Kaufman) pivoting algorithm, 274* ( new storage format for factors: 275* L and diagonal of D is stored in A, 276* subdiagonal of D is stored in E ) 277* 278 WRITE( IOUNIT, FMT = 9992 )PATH, 'Symmetric' 279* 280 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 281 IF( SORD ) THEN 282 WRITE( IOUNIT, FMT = 9983 ) 283 ELSE 284 WRITE( IOUNIT, FMT = 9982 ) 285 END IF 286* 287 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 288 WRITE( IOUNIT, FMT = 9974 )1 289 WRITE( IOUNIT, FMT = 9980 )2 290 WRITE( IOUNIT, FMT = 9979 )3 291 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 292* 293 ELSE IF( LSAMEN( 2, P2, 'HA' ) ) THEN 294* 295* HA: Hermitian 296* Aasen algorithm 297 WRITE( IOUNIT, FMT = 9971 )PATH, 'Hermitian' 298* 299 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 300 WRITE( IOUNIT, FMT = 9983 ) 301* 302 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 303 WRITE( IOUNIT, FMT = 9974 )1 304 WRITE( IOUNIT, FMT = 9980 )2 305 WRITE( IOUNIT, FMT = 9979 )3 306 WRITE( IOUNIT, FMT = 9977 )4 307 WRITE( IOUNIT, FMT = 9978 )5 308 WRITE( IOUNIT, FMT = 9976 )6 309 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 310 311 312 ELSE IF( LSAMEN( 2, P2, 'HE' ) .OR. 313 $ LSAMEN( 2, P2, 'HP' ) ) THEN 314* 315* HE: Hermitian indefinite full 316* with partial (Bunch-Kaufman) pivoting algorithm 317* HP: Hermitian indefinite packed 318* with partial (Bunch-Kaufman) pivoting algorithm 319* 320 IF( LSAME( C3, 'E' ) ) THEN 321 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 322 ELSE 323 WRITE( IOUNIT, FMT = 9991 )PATH, 'Hermitian' 324 END IF 325* 326 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 327 WRITE( IOUNIT, FMT = 9983 ) 328* 329 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 330 WRITE( IOUNIT, FMT = 9974 )1 331 WRITE( IOUNIT, FMT = 9980 )2 332 WRITE( IOUNIT, FMT = 9979 )3 333 WRITE( IOUNIT, FMT = 9977 )4 334 WRITE( IOUNIT, FMT = 9978 )5 335 WRITE( IOUNIT, FMT = 9976 )6 336 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 337* 338 ELSE IF( LSAMEN( 2, P2, 'HR' ) .OR. LSAMEN( 2, P2, 'HK' ) ) THEN 339* 340* HR: Hermitian indefinite full, 341* with rook (bounded Bunch-Kaufman) pivoting algorithm 342* 343* HK: Hermitian indefinite full, 344* with rook (bounded Bunch-Kaufman) pivoting algorithm, 345* ( new storage format for factors: 346* L and diagonal of D is stored in A, 347* subdiagonal of D is stored in E ) 348* 349 WRITE( IOUNIT, FMT = 9992 )PATH, 'Hermitian' 350* 351 WRITE( IOUNIT, FMT = '( '' Matrix types:'' )' ) 352 WRITE( IOUNIT, FMT = 9983 ) 353* 354 WRITE( IOUNIT, FMT = '( '' Test ratios:'' )' ) 355 WRITE( IOUNIT, FMT = 9974 )1 356 WRITE( IOUNIT, FMT = 9980 )2 357 WRITE( IOUNIT, FMT = 9979 )3 358 WRITE( IOUNIT, FMT = '( '' Messages:'' )' ) 359* 360 ELSE 361* 362* Print error message if no header is available. 363* 364 WRITE( IOUNIT, FMT = 9990 )PATH 365 END IF 366* 367* First line of header 368* 369 9999 FORMAT( / 1X, A3, ' drivers: General dense matrices' ) 370 9998 FORMAT( / 1X, A3, ' drivers: General band matrices' ) 371 9997 FORMAT( / 1X, A3, ' drivers: General tridiagonal' ) 372 9996 FORMAT( / 1X, A3, ' drivers: ', A9, 373 $ ' positive definite matrices' ) 374 9995 FORMAT( / 1X, A3, ' drivers: ', A9, 375 $ ' positive definite packed matrices' ) 376 9994 FORMAT( / 1X, A3, ' drivers: ', A9, 377 $ ' positive definite band matrices' ) 378 9993 FORMAT( / 1X, A3, ' drivers: ', A9, 379 $ ' positive definite tridiagonal' ) 380 9971 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices', 381 $ ', "Aasen" Algorithm' ) 382 9992 FORMAT( / 1X, A3, ' drivers: ', A9, ' indefinite matrices', 383 $ ', "rook" (bounded Bunch-Kaufman) pivoting' ) 384 9991 FORMAT( / 1X, A3, ' drivers: ', A9, 385 $ ' indefinite packed matrices', 386 $ ', partial (Bunch-Kaufman) pivoting' ) 387 9891 FORMAT( / 1X, A3, ' drivers: ', A9, 388 $ ' indefinite packed matrices', 389 $ ', "rook" (bounded Bunch-Kaufman) pivoting' ) 390 9990 FORMAT( / 1X, A3, ': No header available' ) 391* 392* GE matrix types 393* 394 9989 FORMAT( 4X, '1. Diagonal', 24X, '7. Last n/2 columns zero', / 4X, 395 $ '2. Upper triangular', 16X, 396 $ '8. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 397 $ '3. Lower triangular', 16X, '9. Random, CNDNUM = 0.1/EPS', 398 $ / 4X, '4. Random, CNDNUM = 2', 13X, 399 $ '10. Scaled near underflow', / 4X, '5. First column zero', 400 $ 14X, '11. Scaled near overflow', / 4X, 401 $ '6. Last column zero' ) 402* 403* GB matrix types 404* 405 9988 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 406 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 407 $ '2. First column zero', 15X, '6. Random, CNDNUM = 0.1/EPS', 408 $ / 4X, '3. Last column zero', 16X, 409 $ '7. Scaled near underflow', / 4X, 410 $ '4. Last n/2 columns zero', 11X, '8. Scaled near overflow' ) 411* 412* GT matrix types 413* 414 9987 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 415 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 416 $ / 4X, '2. Random, CNDNUM = 2', 14X, '8. First column zero', 417 $ / 4X, '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 418 $ '9. Last column zero', / 4X, '4. Random, CNDNUM = 0.1/EPS', 419 $ 7X, '10. Last n/2 columns zero', / 4X, 420 $ '5. Scaled near underflow', 10X, 421 $ '11. Scaled near underflow', / 4X, 422 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 423* 424* PT matrix types 425* 426 9986 FORMAT( ' Matrix types (1-6 have specified condition numbers):', 427 $ / 4X, '1. Diagonal', 24X, '7. Random, unspecified CNDNUM', 428 $ / 4X, '2. Random, CNDNUM = 2', 14X, 429 $ '8. First row and column zero', / 4X, 430 $ '3. Random, CNDNUM = sqrt(0.1/EPS)', 2X, 431 $ '9. Last row and column zero', / 4X, 432 $ '4. Random, CNDNUM = 0.1/EPS', 7X, 433 $ '10. Middle row and column zero', / 4X, 434 $ '5. Scaled near underflow', 10X, 435 $ '11. Scaled near underflow', / 4X, 436 $ '6. Scaled near overflow', 11X, '12. Scaled near overflow' ) 437* 438* PO, PP matrix types 439* 440 9985 FORMAT( 4X, '1. Diagonal', 24X, 441 $ '6. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 442 $ '2. Random, CNDNUM = 2', 14X, '7. Random, CNDNUM = 0.1/EPS', 443 $ / 3X, '*3. First row and column zero', 7X, 444 $ '8. Scaled near underflow', / 3X, 445 $ '*4. Last row and column zero', 8X, 446 $ '9. Scaled near overflow', / 3X, 447 $ '*5. Middle row and column zero', / 3X, 448 $ '(* - tests error exits from ', A3, 449 $ 'TRF, no test ratios are computed)' ) 450* 451* PB matrix types 452* 453 9984 FORMAT( 4X, '1. Random, CNDNUM = 2', 14X, 454 $ '5. Random, CNDNUM = sqrt(0.1/EPS)', / 3X, 455 $ '*2. First row and column zero', 7X, 456 $ '6. Random, CNDNUM = 0.1/EPS', / 3X, 457 $ '*3. Last row and column zero', 8X, 458 $ '7. Scaled near underflow', / 3X, 459 $ '*4. Middle row and column zero', 6X, 460 $ '8. Scaled near overflow', / 3X, 461 $ '(* - tests error exits from ', A3, 462 $ 'TRF, no test ratios are computed)' ) 463* 464* SSY, SSP, CHE, CHP matrix types 465* 466 9983 FORMAT( 4X, '1. Diagonal', 24X, 467 $ '6. Last n/2 rows and columns zero', / 4X, 468 $ '2. Random, CNDNUM = 2', 14X, 469 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 470 $ '3. First row and column zero', 7X, 471 $ '8. Random, CNDNUM = 0.1/EPS', / 4X, 472 $ '4. Last row and column zero', 8X, 473 $ '9. Scaled near underflow', / 4X, 474 $ '5. Middle row and column zero', 5X, 475 $ '10. Scaled near overflow' ) 476* 477* CSY, CSP matrix types 478* 479 9982 FORMAT( 4X, '1. Diagonal', 24X, 480 $ '7. Random, CNDNUM = sqrt(0.1/EPS)', / 4X, 481 $ '2. Random, CNDNUM = 2', 14X, '8. Random, CNDNUM = 0.1/EPS', 482 $ / 4X, '3. First row and column zero', 7X, 483 $ '9. Scaled near underflow', / 4X, 484 $ '4. Last row and column zero', 7X, 485 $ '10. Scaled near overflow', / 4X, 486 $ '5. Middle row and column zero', 5X, 487 $ '11. Block diagonal matrix', / 4X, 488 $ '6. Last n/2 rows and columns zero' ) 489* 490* Test ratios 491* 492 9981 FORMAT( 3X, I2, ': norm( L * U - A ) / ( N * norm(A) * EPS )' ) 493 9980 FORMAT( 3X, I2, ': norm( B - A * X ) / ', 494 $ '( norm(A) * norm(X) * EPS )' ) 495 9979 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 496 $ '( norm(XACT) * CNDNUM * EPS )' ) 497 9978 FORMAT( 3X, I2, ': norm( X - XACT ) / ', 498 $ '( norm(XACT) * (error bound) )' ) 499 9977 FORMAT( 3X, I2, ': (backward error) / EPS' ) 500 9976 FORMAT( 3X, I2, ': RCOND * CNDNUM - 1.0' ) 501 9975 FORMAT( 3X, I2, ': norm( U'' * U - A ) / ( N * norm(A) * EPS )', 502 $ ', or', / 7X, 'norm( L * L'' - A ) / ( N * norm(A) * EPS )' 503 $ ) 504 9974 FORMAT( 3X, I2, ': norm( U*D*U'' - A ) / ( N * norm(A) * EPS )', 505 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 506 $ ) 507 9973 FORMAT( 3X, I2, ': norm( U''*D*U - A ) / ( N * norm(A) * EPS )', 508 $ ', or', / 7X, 'norm( L*D*L'' - A ) / ( N * norm(A) * EPS )' 509 $ ) 510 9972 FORMAT( 3X, I2, ': abs( WORK(1) - RPVGRW ) /', 511 $ ' ( max( WORK(1), RPVGRW ) * EPS )' ) 512* 513 RETURN 514* 515* End of ALADHD 516* 517 END 518