360 SUBROUTINE ddrvsg2stg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
361 $ NOUNIT, A, LDA, B, LDB, D, D2, Z, LDZ, AB,
362 $ BB, AP, BP, WORK, NWORK, IWORK, LIWORK,
373 INTEGER INFO, LDA, LDB, LDZ, LIWORK, NOUNIT, NSIZES,
375 DOUBLE PRECISION THRESH
379 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
380 DOUBLE PRECISION A( lda, * ), AB( lda, * ), AP( * ),
381 $ b( ldb, * ), bb( ldb, * ), bp( * ), d( * ),
382 $ d2( * ), result( * ), work( * ), z( ldz, * )
388 DOUBLE PRECISION ZERO, ONE, TEN
389 parameter( zero = 0.0d0, one = 1.0d0, ten = 10.0d0 )
391 parameter( maxtyp = 21 )
396 INTEGER I, IBTYPE, IBUPLO, IINFO, IJ, IL, IMODE, ITEMP,
397 $ itype, iu, j, jcol, jsize, jtype, ka, ka9, kb,
398 $ kb9, m, mtypes, n, nerrs, nmats, nmax, ntest,
400 DOUBLE PRECISION ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
401 $ rtunfl, ulp, ulpinv, unfl, vl, vu, temp1, temp2
404 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
405 $ kmagn( maxtyp ), kmode( maxtyp ),
410 DOUBLE PRECISION DLAMCH, DLARND
411 EXTERNAL lsame, dlamch, dlarnd
420 INTRINSIC abs, dble, max, min, sqrt
423 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 6*9 /
424 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
426 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
439 nmax = max( nmax, nn( j ) )
446 IF( nsizes.LT.0 )
THEN 448 ELSE IF( badnn )
THEN 450 ELSE IF( ntypes.LT.0 )
THEN 452 ELSE IF( lda.LE.1 .OR. lda.LT.nmax )
THEN 454 ELSE IF( ldz.LE.1 .OR. ldz.LT.nmax )
THEN 456 ELSE IF( 2*max( nmax, 3 )**2.GT.nwork )
THEN 458 ELSE IF( 2*max( nmax, 3 )**2.GT.liwork )
THEN 463 CALL xerbla(
'DDRVSG2STG', -info )
469 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
474 unfl = dlamch(
'Safe minimum' )
475 ovfl = dlamch(
'Overflow' )
477 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
479 rtunfl = sqrt( unfl )
480 rtovfl = sqrt( ovfl )
483 iseed2( i ) = iseed( i )
491 DO 650 jsize = 1, nsizes
493 aninv = one / dble( max( 1, n ) )
495 IF( nsizes.NE.1 )
THEN 496 mtypes = min( maxtyp, ntypes )
498 mtypes = min( maxtyp+1, ntypes )
503 DO 640 jtype = 1, mtypes
504 IF( .NOT.dotype( jtype ) )
510 ioldsd( j ) = iseed( j )
528 IF( mtypes.GT.maxtyp )
531 itype = ktype( jtype )
532 imode = kmode( jtype )
536 GO TO ( 40, 50, 60 )kmagn( jtype )
543 anorm = ( rtovfl*ulp )*aninv
547 anorm = rtunfl*n*ulpinv
557 IF( itype.EQ.1 )
THEN 563 CALL dlaset(
'Full', lda, n, zero, zero, a, lda )
565 ELSE IF( itype.EQ.2 )
THEN 571 CALL dlaset(
'Full', lda, n, zero, zero, a, lda )
573 a( jcol, jcol ) = anorm
576 ELSE IF( itype.EQ.4 )
THEN 582 CALL dlatms( n, n,
'S', iseed,
'S', work, imode, cond,
583 $ anorm, 0, 0,
'N', a, lda, work( n+1 ),
586 ELSE IF( itype.EQ.5 )
THEN 592 CALL dlatms( n, n,
'S', iseed,
'S', work, imode, cond,
593 $ anorm, n, n,
'N', a, lda, work( n+1 ),
596 ELSE IF( itype.EQ.7 )
THEN 602 CALL dlatmr( n, n,
'S', iseed,
'S', work, 6, one, one,
603 $
'T',
'N', work( n+1 ), 1, one,
604 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
605 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
607 ELSE IF( itype.EQ.8 )
THEN 613 CALL dlatmr( n, n,
'S', iseed,
'H', work, 6, one, one,
614 $
'T',
'N', work( n+1 ), 1, one,
615 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
616 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
618 ELSE IF( itype.EQ.9 )
THEN 632 IF( kb9.GT.ka9 )
THEN 636 ka = max( 0, min( n-1, ka9 ) )
637 kb = max( 0, min( n-1, kb9 ) )
638 CALL dlatms( n, n,
'S', iseed,
'S', work, imode, cond,
639 $ anorm, ka, ka,
'N', a, lda, work( n+1 ),
647 IF( iinfo.NE.0 )
THEN 648 WRITE( nounit, fmt = 9999 )
'Generator', iinfo, n, jtype,
661 il = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
662 iu = 1 + int( ( n-1 )*dlarnd( 1, iseed2 ) )
691 CALL dlatms( n, n,
'U', iseed,
'P', work, 5, ten, one,
692 $ kb, kb, uplo, b, ldb, work( n+1 ),
699 CALL dlacpy(
' ', n, n, a, lda, z, ldz )
700 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
702 CALL dsygv( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
703 $ work, nwork, iinfo )
704 IF( iinfo.NE.0 )
THEN 705 WRITE( nounit, fmt = 9999 )
'DSYGV(V,' // uplo //
706 $
')', iinfo, n, jtype, ioldsd
708 IF( iinfo.LT.0 )
THEN 711 result( ntest ) = ulpinv
718 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
719 $ ldz, d, work, result( ntest ) )
725 CALL dlacpy(
' ', n, n, a, lda, z, ldz )
726 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
729 $ bb, ldb, d2, work, nwork, iinfo )
730 IF( iinfo.NE.0 )
THEN 731 WRITE( nounit, fmt = 9999 )
732 $
'DSYGV_2STAGE(V,' // uplo //
733 $
')', iinfo, n, jtype, ioldsd
735 IF( iinfo.LT.0 )
THEN 738 result( ntest ) = ulpinv
755 temp1 = max( temp1, abs( d( j ) ),
757 temp2 = max( temp2, abs( d( j )-d2( j ) ) )
760 result( ntest ) = temp2 /
761 $ max( unfl, ulp*max( temp1, temp2 ) )
767 CALL dlacpy(
' ', n, n, a, lda, z, ldz )
768 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
770 CALL dsygvd( ibtype,
'V', uplo, n, z, ldz, bb, ldb, d,
771 $ work, nwork, iwork, liwork, iinfo )
772 IF( iinfo.NE.0 )
THEN 773 WRITE( nounit, fmt = 9999 )
'DSYGVD(V,' // uplo //
774 $
')', iinfo, n, jtype, ioldsd
776 IF( iinfo.LT.0 )
THEN 779 result( ntest ) = ulpinv
786 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
787 $ ldz, d, work, result( ntest ) )
793 CALL dlacpy(
' ', n, n, a, lda, ab, lda )
794 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
796 CALL dsygvx( ibtype,
'V',
'A', uplo, n, ab, lda, bb,
797 $ ldb, vl, vu, il, iu, abstol, m, d, z,
798 $ ldz, work, nwork, iwork( n+1 ), iwork,
800 IF( iinfo.NE.0 )
THEN 801 WRITE( nounit, fmt = 9999 )
'DSYGVX(V,A' // uplo //
802 $
')', iinfo, n, jtype, ioldsd
804 IF( iinfo.LT.0 )
THEN 807 result( ntest ) = ulpinv
814 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
815 $ ldz, d, work, result( ntest ) )
819 CALL dlacpy(
' ', n, n, a, lda, ab, lda )
820 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
829 CALL dsygvx( ibtype,
'V',
'V', uplo, n, ab, lda, bb,
830 $ ldb, vl, vu, il, iu, abstol, m, d, z,
831 $ ldz, work, nwork, iwork( n+1 ), iwork,
833 IF( iinfo.NE.0 )
THEN 834 WRITE( nounit, fmt = 9999 )
'DSYGVX(V,V,' //
835 $ uplo //
')', iinfo, n, jtype, ioldsd
837 IF( iinfo.LT.0 )
THEN 840 result( ntest ) = ulpinv
847 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
848 $ ldz, d, work, result( ntest ) )
852 CALL dlacpy(
' ', n, n, a, lda, ab, lda )
853 CALL dlacpy( uplo, n, n, b, ldb, bb, ldb )
855 CALL dsygvx( ibtype,
'V',
'I', uplo, n, ab, lda, bb,
856 $ ldb, vl, vu, il, iu, abstol, m, d, z,
857 $ ldz, work, nwork, iwork( n+1 ), iwork,
859 IF( iinfo.NE.0 )
THEN 860 WRITE( nounit, fmt = 9999 )
'DSYGVX(V,I,' //
861 $ uplo //
')', iinfo, n, jtype, ioldsd
863 IF( iinfo.LT.0 )
THEN 866 result( ntest ) = ulpinv
873 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
874 $ ldz, d, work, result( ntest ) )
884 IF( lsame( uplo,
'U' ) )
THEN 904 CALL dspgv( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
906 IF( iinfo.NE.0 )
THEN 907 WRITE( nounit, fmt = 9999 )
'DSPGV(V,' // uplo //
908 $
')', iinfo, n, jtype, ioldsd
910 IF( iinfo.LT.0 )
THEN 913 result( ntest ) = ulpinv
920 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
921 $ ldz, d, work, result( ntest ) )
929 IF( lsame( uplo,
'U' ) )
THEN 949 CALL dspgvd( ibtype,
'V', uplo, n, ap, bp, d, z, ldz,
950 $ work, nwork, iwork, liwork, iinfo )
951 IF( iinfo.NE.0 )
THEN 952 WRITE( nounit, fmt = 9999 )
'DSPGVD(V,' // uplo //
953 $
')', iinfo, n, jtype, ioldsd
955 IF( iinfo.LT.0 )
THEN 958 result( ntest ) = ulpinv
965 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
966 $ ldz, d, work, result( ntest ) )
974 IF( lsame( uplo,
'U' ) )
THEN 994 CALL dspgvx( ibtype,
'V',
'A', uplo, n, ap, bp, vl,
995 $ vu, il, iu, abstol, m, d, z, ldz, work,
996 $ iwork( n+1 ), iwork, info )
997 IF( iinfo.NE.0 )
THEN 998 WRITE( nounit, fmt = 9999 )
'DSPGVX(V,A' // uplo //
999 $
')', iinfo, n, jtype, ioldsd
1001 IF( iinfo.LT.0 )
THEN 1004 result( ntest ) = ulpinv
1011 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1012 $ ldz, d, work, result( ntest ) )
1018 IF( lsame( uplo,
'U' ) )
THEN 1022 ap( ij ) = a( i, j )
1023 bp( ij ) = b( i, j )
1031 ap( ij ) = a( i, j )
1032 bp( ij ) = b( i, j )
1040 CALL dspgvx( ibtype,
'V',
'V', uplo, n, ap, bp, vl,
1041 $ vu, il, iu, abstol, m, d, z, ldz, work,
1042 $ iwork( n+1 ), iwork, info )
1043 IF( iinfo.NE.0 )
THEN 1044 WRITE( nounit, fmt = 9999 )
'DSPGVX(V,V' // uplo //
1045 $
')', iinfo, n, jtype, ioldsd
1047 IF( iinfo.LT.0 )
THEN 1050 result( ntest ) = ulpinv
1057 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1058 $ ldz, d, work, result( ntest ) )
1064 IF( lsame( uplo,
'U' ) )
THEN 1068 ap( ij ) = a( i, j )
1069 bp( ij ) = b( i, j )
1077 ap( ij ) = a( i, j )
1078 bp( ij ) = b( i, j )
1084 CALL dspgvx( ibtype,
'V',
'I', uplo, n, ap, bp, vl,
1085 $ vu, il, iu, abstol, m, d, z, ldz, work,
1086 $ iwork( n+1 ), iwork, info )
1087 IF( iinfo.NE.0 )
THEN 1088 WRITE( nounit, fmt = 9999 )
'DSPGVX(V,I' // uplo //
1089 $
')', iinfo, n, jtype, ioldsd
1091 IF( iinfo.LT.0 )
THEN 1094 result( ntest ) = ulpinv
1101 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1102 $ ldz, d, work, result( ntest ) )
1106 IF( ibtype.EQ.1 )
THEN 1114 IF( lsame( uplo,
'U' ) )
THEN 1116 DO 320 i = max( 1, j-ka ), j
1117 ab( ka+1+i-j, j ) = a( i, j )
1119 DO 330 i = max( 1, j-kb ), j
1120 bb( kb+1+i-j, j ) = b( i, j )
1125 DO 350 i = j, min( n, j+ka )
1126 ab( 1+i-j, j ) = a( i, j )
1128 DO 360 i = j, min( n, j+kb )
1129 bb( 1+i-j, j ) = b( i, j )
1134 CALL dsbgv(
'V', uplo, n, ka, kb, ab, lda, bb, ldb,
1135 $ d, z, ldz, work, iinfo )
1136 IF( iinfo.NE.0 )
THEN 1137 WRITE( nounit, fmt = 9999 )
'DSBGV(V,' //
1138 $ uplo //
')', iinfo, n, jtype, ioldsd
1140 IF( iinfo.LT.0 )
THEN 1143 result( ntest ) = ulpinv
1150 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1151 $ ldz, d, work, result( ntest ) )
1159 IF( lsame( uplo,
'U' ) )
THEN 1161 DO 380 i = max( 1, j-ka ), j
1162 ab( ka+1+i-j, j ) = a( i, j )
1164 DO 390 i = max( 1, j-kb ), j
1165 bb( kb+1+i-j, j ) = b( i, j )
1170 DO 410 i = j, min( n, j+ka )
1171 ab( 1+i-j, j ) = a( i, j )
1173 DO 420 i = j, min( n, j+kb )
1174 bb( 1+i-j, j ) = b( i, j )
1179 CALL dsbgvd(
'V', uplo, n, ka, kb, ab, lda, bb,
1180 $ ldb, d, z, ldz, work, nwork, iwork,
1182 IF( iinfo.NE.0 )
THEN 1183 WRITE( nounit, fmt = 9999 )
'DSBGVD(V,' //
1184 $ uplo //
')', iinfo, n, jtype, ioldsd
1186 IF( iinfo.LT.0 )
THEN 1189 result( ntest ) = ulpinv
1196 CALL dsgt01( ibtype, uplo, n, n, a, lda, b, ldb, z,
1197 $ ldz, d, work, result( ntest ) )
1205 IF( lsame( uplo,
'U' ) )
THEN 1207 DO 440 i = max( 1, j-ka ), j
1208 ab( ka+1+i-j, j ) = a( i, j )
1210 DO 450 i = max( 1, j-kb ), j
1211 bb( kb+1+i-j, j ) = b( i, j )
1216 DO 470 i = j, min( n, j+ka )
1217 ab( 1+i-j, j ) = a( i, j )
1219 DO 480 i = j, min( n, j+kb )
1220 bb( 1+i-j, j ) = b( i, j )
1225 CALL dsbgvx(
'V',
'A', uplo, n, ka, kb, ab, lda,
1226 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1227 $ iu, abstol, m, d, z, ldz, work,
1228 $ iwork( n+1 ), iwork, iinfo )
1229 IF( iinfo.NE.0 )
THEN 1230 WRITE( nounit, fmt = 9999 )
'DSBGVX(V,A' //
1231 $ uplo //
')', iinfo, n, jtype, ioldsd
1233 IF( iinfo.LT.0 )
THEN 1236 result( ntest ) = ulpinv
1243 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1244 $ ldz, d, work, result( ntest ) )
1251 IF( lsame( uplo,
'U' ) )
THEN 1253 DO 500 i = max( 1, j-ka ), j
1254 ab( ka+1+i-j, j ) = a( i, j )
1256 DO 510 i = max( 1, j-kb ), j
1257 bb( kb+1+i-j, j ) = b( i, j )
1262 DO 530 i = j, min( n, j+ka )
1263 ab( 1+i-j, j ) = a( i, j )
1265 DO 540 i = j, min( n, j+kb )
1266 bb( 1+i-j, j ) = b( i, j )
1273 CALL dsbgvx(
'V',
'V', uplo, n, ka, kb, ab, lda,
1274 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1275 $ iu, abstol, m, d, z, ldz, work,
1276 $ iwork( n+1 ), iwork, iinfo )
1277 IF( iinfo.NE.0 )
THEN 1278 WRITE( nounit, fmt = 9999 )
'DSBGVX(V,V' //
1279 $ uplo //
')', iinfo, n, jtype, ioldsd
1281 IF( iinfo.LT.0 )
THEN 1284 result( ntest ) = ulpinv
1291 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1292 $ ldz, d, work, result( ntest ) )
1298 IF( lsame( uplo,
'U' ) )
THEN 1300 DO 560 i = max( 1, j-ka ), j
1301 ab( ka+1+i-j, j ) = a( i, j )
1303 DO 570 i = max( 1, j-kb ), j
1304 bb( kb+1+i-j, j ) = b( i, j )
1309 DO 590 i = j, min( n, j+ka )
1310 ab( 1+i-j, j ) = a( i, j )
1312 DO 600 i = j, min( n, j+kb )
1313 bb( 1+i-j, j ) = b( i, j )
1318 CALL dsbgvx(
'V',
'I', uplo, n, ka, kb, ab, lda,
1319 $ bb, ldb, bp, max( 1, n ), vl, vu, il,
1320 $ iu, abstol, m, d, z, ldz, work,
1321 $ iwork( n+1 ), iwork, iinfo )
1322 IF( iinfo.NE.0 )
THEN 1323 WRITE( nounit, fmt = 9999 )
'DSBGVX(V,I' //
1324 $ uplo //
')', iinfo, n, jtype, ioldsd
1326 IF( iinfo.LT.0 )
THEN 1329 result( ntest ) = ulpinv
1336 CALL dsgt01( ibtype, uplo, n, m, a, lda, b, ldb, z,
1337 $ ldz, d, work, result( ntest ) )
1346 ntestt = ntestt + ntest
1347 CALL dlafts(
'DSG', n, n, jtype, ntest, result, ioldsd,
1348 $ thresh, nounit, nerrs )
1354 CALL dlasum(
'DSG', nounit, nerrs, ntestt )
1360 9999
FORMAT(
' DDRVSG2STG: ', a,
' returned INFO=', i6,
'.', / 9x,
1361 $
'N=', i6,
', JTYPE=', i6,
', ISEED=(', 3( i5,
',' ), i5,
')' )
subroutine dlacpy(UPLO, M, N, A, LDA, B, LDB)
DLACPY copies all or part of one two-dimensional array to another.
subroutine dspgv(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, INFO)
DSPGV
subroutine ddrvsg2stg(NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH, NOUNIT, A, LDA, B, LDB, D, D2, Z, LDZ, AB, BB, AP, BP, WORK, NWORK, IWORK, LIWORK, RESULT, INFO)
DDRVSG2STG
subroutine dsygvd(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, IWORK, LIWORK, INFO)
DSYGVD
subroutine dlatms(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, KL, KU, PACK, A, LDA, WORK, INFO)
DLATMS
subroutine dlaset(UPLO, M, N, ALPHA, BETA, A, LDA)
DLASET initializes the off-diagonal elements and the diagonal elements of a matrix to given values...
subroutine dsygv_2stage(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO)
DSYGV_2STAGE
subroutine dsbgvd(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
DSBGVD
subroutine dsygv(ITYPE, JOBZ, UPLO, N, A, LDA, B, LDB, W, WORK, LWORK, INFO)
DSYGV
subroutine xerbla(SRNAME, INFO)
XERBLA
subroutine dlabad(SMALL, LARGE)
DLABAD
subroutine dlasum(TYPE, IOUNIT, IE, NRUN)
DLASUM
subroutine dspgvx(ITYPE, JOBZ, RANGE, UPLO, N, AP, BP, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
DSPGVX
subroutine dsbgv(JOBZ, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, W, Z, LDZ, WORK, INFO)
DSBGV
subroutine dsbgvx(JOBZ, RANGE, UPLO, N, KA, KB, AB, LDAB, BB, LDBB, Q, LDQ, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, IWORK, IFAIL, INFO)
DSBGVX
subroutine dsygvx(ITYPE, JOBZ, RANGE, UPLO, N, A, LDA, B, LDB, VL, VU, IL, IU, ABSTOL, M, W, Z, LDZ, WORK, LWORK, IWORK, IFAIL, INFO)
DSYGVX
subroutine dsgt01(ITYPE, UPLO, N, M, A, LDA, B, LDB, Z, LDZ, D, WORK, RESULT)
DSGT01
subroutine dspgvd(ITYPE, JOBZ, UPLO, N, AP, BP, W, Z, LDZ, WORK, LWORK, IWORK, LIWORK, INFO)
DSPGVD
subroutine dlafts(TYPE, M, N, IMAT, NTESTS, RESULT, ISEED, THRESH, IOUNIT, IE)
DLAFTS
subroutine dlatmr(M, N, DIST, ISEED, SYM, D, MODE, COND, DMAX, RSIGN, GRADE, DL, MODEL, CONDL, DR, MODER, CONDR, PIVTNG, IPIVOT, KL, KU, SPARSE, ANORM, PACK, A, LDA, IWORK, INFO)
DLATMR