352 SUBROUTINE ddrvsg( NSIZES, NN, NTYPES, DOTYPE, ISEED, THRESH,
353 $ NOUNIT, A, LDA, B, LDB, D, Z, LDZ, AB, BB, AP,
354 $ BP, WORK, NWORK, IWORK, LIWORK, RESULT, INFO )
361 INTEGER INFO, LDA, LDB, LDZ, LIWORK, NOUNIT, NSIZES,
363 DOUBLE PRECISION THRESH
367 INTEGER ISEED( 4 ), IWORK( * ), NN( * )
368 DOUBLE PRECISION A( LDA, * ), AB( LDA, * ), AP( * ),
369 $ b( ldb, * ), bb( ldb, * ), bp( * ), d( * ),
370 $ result( * ), work( * ), z( ldz, * )
376 DOUBLE PRECISION ZERO, ONE, TEN
377 PARAMETER ( ZERO = 0.0d0, one = 1.0d0, ten = 10.0d0 )
379 parameter( maxtyp = 21 )
384 INTEGER I, IBTYPE, IBUPLO, IINFO, IJ, IL, IMODE, ITEMP,
385 $ itype, iu, j, jcol, jsize, jtype, ka, ka9, kb,
386 $ kb9, m, mtypes, n, nerrs, nmats, nmax, ntest,
388 DOUBLE PRECISION ABSTOL, ANINV, ANORM, COND, OVFL, RTOVFL,
389 $ RTUNFL, ULP, ULPINV, UNFL, VL, VU
392 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
393 $ KMAGN( MAXTYP ), KMODE( MAXTYP ),
398 DOUBLE PRECISION DLAMCH, DLARND
399 EXTERNAL lsame, dlamch, dlarnd
407 INTRINSIC abs, dble,
max,
min, sqrt
410 DATA ktype / 1, 2, 5*4, 5*5, 3*8, 6*9 /
411 DATA kmagn / 2*1, 1, 1, 1, 2, 3, 1, 1, 1, 2, 3, 1,
413 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
426 nmax =
max( nmax, nn( j ) )
433 IF( nsizes.LT.0 )
THEN
435 ELSE IF( badnn )
THEN
437 ELSE IF( ntypes.LT.0 )
THEN
439 ELSE IF( lda.LE.1 .OR. lda.LT.nmax )
THEN
441 ELSE IF( ldz.LE.1 .OR. ldz.LT.nmax )
THEN
443 ELSE IF( 2*
max( nmax, 3 )**2.GT.nwork )
THEN
445 ELSE IF( 2*
max( nmax, 3 )**2.GT.liwork )
THEN
450 CALL xerbla(
'DDRVSG', -info )
456 IF( nsizes.EQ.0 .OR. ntypes.EQ.0 )
461 unfl = dlamch(
'Safe minimum' )
462 ovfl = dlamch(
'Overflow' )
464 ulp = dlamch(
'Epsilon' )*dlamch(
'Base' )
466 rtunfl = sqrt( unfl )
467 rtovfl = sqrt( ovfl )
470 iseed2( i ) = iseed( i )
478 DO 650 jsize = 1, nsizes
480 aninv = one / dble(
max( 1, n ) )
482 IF( nsizes.NE.1 )
THEN
483 mtypes =
min( maxtyp, ntypes )
485 mtypes =
min( maxtyp+1, ntypes )
490 DO 640 jtype = 1, mtypes
491 IF( .NOT.dotype( jtype ) )
497 ioldsd( j ) = iseed( j )
515 IF( mtypes.GT.maxtyp )
518 itype = ktype( jtype )
519 imode = kmode( jtype )
523 GO TO ( 40, 50, 60 )kmagn( jtype )
530 anorm = ( rtovfl*ulp )*aninv
534 anorm = rtunfl*n*ulpinv
544 IF( itype.EQ.1 )
THEN
550 CALL dlaset(
'Full', lda, n, zero, zero, a, lda )
552 ELSE IF( itype.EQ.2 )
THEN
558 CALL dlaset(
'Full', lda, n, zero, zero, a, lda )
560 a( jcol, jcol ) = anorm
563 ELSE IF( itype.EQ.4 )
THEN
569 CALL dlatms( n, n,
'S', iseed,
'S', work, imode, cond,
570 $ anorm, 0, 0,
'N', a, lda, work( n+1 ),
573 ELSE IF( itype.EQ.5 )
THEN
579 CALL dlatms( n, n,
'S', iseed,
'S', work, imode, cond,
580 $ anorm, n, n,
'N', a, lda, work( n+1 ),
583 ELSE IF( itype.EQ.7 )
THEN
589 CALL dlatmr( n, n,
'S', iseed,
'S', work, 6, one, one,
590 $
'T',
'N', work( n+1 ), 1, one,
591 $ work( 2*n+1 ), 1, one,
'N', idumma, 0, 0,
592 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
594 ELSE IF( itype.EQ.8 )
THEN
600 CALL dlatmr( n, n,
'S', iseed,
'H', work, 6, one, one,
601 $
'T',
'N', work( n+1 ), 1, one,
602 $ work( 2*n+1 ), 1, one,
'N', idumma, n, n,
603 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
605 ELSE IF( itype.EQ.9 )
THEN
619 IF( kb9.GT.ka9 )
THEN
623 ka =
max( 0,
min( n-1, ka9 ) )
624 kb =
max( 0,
min( n-1, kb9 ) )
625 CALL dlatms( n, n, 's
', ISEED, 's
', WORK, IMODE, COND,
626 $ ANORM, KA, KA, 'n
', A, LDA, WORK( N+1 ),
634.NE.
IF( IINFO0 ) THEN
635 WRITE( NOUNIT, FMT = 9999 )'generator
', IINFO, N, JTYPE,
648 IL = 1 + ( N-1 )*DLARND( 1, ISEED2 )
649 IU = 1 + ( N-1 )*DLARND( 1, ISEED2 )
678 CALL DLATMS( N, N, 'u
', ISEED, 'p
', WORK, 5, TEN, ONE,
679 $ KB, KB, UPLO, B, LDB, WORK( N+1 ),
686 CALL DLACPY( ' ', N, N, A, LDA, Z, LDZ )
687 CALL DLACPY( UPLO, N, N, B, LDB, BB, LDB )
689 CALL DSYGV( IBTYPE, 'v
', UPLO, N, Z, LDZ, BB, LDB, D,
690 $ WORK, NWORK, IINFO )
691.NE.
IF( IINFO0 ) THEN
692 WRITE( NOUNIT, FMT = 9999 )'dsygv(v,
' // UPLO //
693 $ ')
', IINFO, N, JTYPE, IOLDSD
695.LT.
IF( IINFO0 ) THEN
698 RESULT( NTEST ) = ULPINV
705 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
706 $ LDZ, D, WORK, RESULT( NTEST ) )
712 CALL DLACPY( ' ', N, N, A, LDA, Z, LDZ )
713 CALL DLACPY( UPLO, N, N, B, LDB, BB, LDB )
715 CALL DSYGVD( IBTYPE, 'v
', UPLO, N, Z, LDZ, BB, LDB, D,
716 $ WORK, NWORK, IWORK, LIWORK, IINFO )
717.NE.
IF( IINFO0 ) THEN
718 WRITE( NOUNIT, FMT = 9999 )'dsygvd(v,
' // UPLO //
719 $ ')
', IINFO, N, JTYPE, IOLDSD
721.LT.
IF( IINFO0 ) THEN
724 RESULT( NTEST ) = ULPINV
731 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
732 $ LDZ, D, WORK, RESULT( NTEST ) )
738 CALL DLACPY( ' ', N, N, A, LDA, AB, LDA )
739 CALL DLACPY( UPLO, N, N, B, LDB, BB, LDB )
741 CALL DSYGVX( IBTYPE, 'v
', 'a
', UPLO, N, AB, LDA, BB,
742 $ LDB, VL, VU, IL, IU, ABSTOL, M, D, Z,
743 $ LDZ, WORK, NWORK, IWORK( N+1 ), IWORK,
745.NE.
IF( IINFO0 ) THEN
746 WRITE( NOUNIT, FMT = 9999 )'dsygvx(v,a
' // UPLO //
747 $ ')
', IINFO, N, JTYPE, IOLDSD
749.LT.
IF( IINFO0 ) THEN
752 RESULT( NTEST ) = ULPINV
759 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
760 $ LDZ, D, WORK, RESULT( NTEST ) )
764 CALL DLACPY( ' ', N, N, A, LDA, AB, LDA )
765 CALL DLACPY( UPLO, N, N, B, LDB, BB, LDB )
774 CALL DSYGVX( IBTYPE, 'v
', 'v
', UPLO, N, AB, LDA, BB,
775 $ LDB, VL, VU, IL, IU, ABSTOL, M, D, Z,
776 $ LDZ, WORK, NWORK, IWORK( N+1 ), IWORK,
778.NE.
IF( IINFO0 ) THEN
779 WRITE( NOUNIT, FMT = 9999 )'dsygvx(v,v,
' //
780 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
782.LT.
IF( IINFO0 ) THEN
785 RESULT( NTEST ) = ULPINV
792 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
793 $ LDZ, D, WORK, RESULT( NTEST ) )
797 CALL DLACPY( ' ', N, N, A, LDA, AB, LDA )
798 CALL DLACPY( UPLO, N, N, B, LDB, BB, LDB )
800 CALL DSYGVX( IBTYPE, 'v
', 'i
', UPLO, N, AB, LDA, BB,
801 $ LDB, VL, VU, IL, IU, ABSTOL, M, D, Z,
802 $ LDZ, WORK, NWORK, IWORK( N+1 ), IWORK,
804.NE.
IF( IINFO0 ) THEN
805 WRITE( NOUNIT, FMT = 9999 )'dsygvx(v,i,
' //
806 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
808.LT.
IF( IINFO0 ) THEN
811 RESULT( NTEST ) = ULPINV
818 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
819 $ LDZ, D, WORK, RESULT( NTEST ) )
829 IF( LSAME( UPLO, 'u
' ) ) THEN
849 CALL DSPGV( IBTYPE, 'v
', UPLO, N, AP, BP, D, Z, LDZ,
851.NE.
IF( IINFO0 ) THEN
852 WRITE( NOUNIT, FMT = 9999 )'dspgv(v,
' // UPLO //
853 $ ')
', IINFO, N, JTYPE, IOLDSD
855.LT.
IF( IINFO0 ) THEN
858 RESULT( NTEST ) = ULPINV
865 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
866 $ LDZ, D, WORK, RESULT( NTEST ) )
874 IF( LSAME( UPLO, 'u
' ) ) THEN
894 CALL DSPGVD( IBTYPE, 'v
', UPLO, N, AP, BP, D, Z, LDZ,
895 $ WORK, NWORK, IWORK, LIWORK, IINFO )
896.NE.
IF( IINFO0 ) THEN
897 WRITE( NOUNIT, FMT = 9999 )'dspgvd(v,
' // UPLO //
898 $ ')
', IINFO, N, JTYPE, IOLDSD
900.LT.
IF( IINFO0 ) THEN
903 RESULT( NTEST ) = ULPINV
910 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
911 $ LDZ, D, WORK, RESULT( NTEST ) )
919 IF( LSAME( UPLO, 'u
' ) ) THEN
939 CALL DSPGVX( IBTYPE, 'v
', 'a
', UPLO, N, AP, BP, VL,
940 $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK,
941 $ IWORK( N+1 ), IWORK, INFO )
942.NE.
IF( IINFO0 ) THEN
943 WRITE( NOUNIT, FMT = 9999 )'dspgvx(v,a
' // UPLO //
944 $ ')
', IINFO, N, JTYPE, IOLDSD
946.LT.
IF( IINFO0 ) THEN
949 RESULT( NTEST ) = ULPINV
956 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
957 $ LDZ, D, WORK, RESULT( NTEST ) )
963 IF( LSAME( UPLO, 'u
' ) ) THEN
985 CALL DSPGVX( IBTYPE, 'v
', 'v
', UPLO, N, AP, BP, VL,
986 $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK,
987 $ IWORK( N+1 ), IWORK, INFO )
988.NE.
IF( IINFO0 ) THEN
989 WRITE( NOUNIT, FMT = 9999 )'dspgvx(v,v
' // UPLO //
990 $ ')
', IINFO, N, JTYPE, IOLDSD
992.LT.
IF( IINFO0 ) THEN
995 RESULT( NTEST ) = ULPINV
1002 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
1003 $ LDZ, D, WORK, RESULT( NTEST ) )
1009 IF( LSAME( UPLO, 'u
' ) ) THEN
1013 AP( IJ ) = A( I, J )
1014 BP( IJ ) = B( I, J )
1022 AP( IJ ) = A( I, J )
1023 BP( IJ ) = B( I, J )
1029 CALL DSPGVX( IBTYPE, 'v
', 'i
', UPLO, N, AP, BP, VL,
1030 $ VU, IL, IU, ABSTOL, M, D, Z, LDZ, WORK,
1031 $ IWORK( N+1 ), IWORK, INFO )
1032.NE.
IF( IINFO0 ) THEN
1033 WRITE( NOUNIT, FMT = 9999 )'dspgvx(v,i
' // UPLO //
1034 $ ')
', IINFO, N, JTYPE, IOLDSD
1036.LT.
IF( IINFO0 ) THEN
1039 RESULT( NTEST ) = ULPINV
1046 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
1047 $ LDZ, D, WORK, RESULT( NTEST ) )
1051.EQ.
IF( IBTYPE1 ) THEN
1059 IF( LSAME( UPLO, 'u
' ) ) THEN
1061 DO 320 I = MAX( 1, J-KA ), J
1062 AB( KA+1+I-J, J ) = A( I, J )
1064 DO 330 I = MAX( 1, J-KB ), J
1065 BB( KB+1+I-J, J ) = B( I, J )
1070 DO 350 I = J, MIN( N, J+KA )
1071 AB( 1+I-J, J ) = A( I, J )
1073 DO 360 I = J, MIN( N, J+KB )
1074 BB( 1+I-J, J ) = B( I, J )
1079 CALL DSBGV( 'v
', UPLO, N, KA, KB, AB, LDA, BB, LDB,
1080 $ D, Z, LDZ, WORK, IINFO )
1081.NE.
IF( IINFO0 ) THEN
1082 WRITE( NOUNIT, FMT = 9999 )'dsbgv(v,
' //
1083 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
1085.LT.
IF( IINFO0 ) THEN
1088 RESULT( NTEST ) = ULPINV
1095 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
1096 $ LDZ, D, WORK, RESULT( NTEST ) )
1104 IF( LSAME( UPLO, 'u
' ) ) THEN
1106 DO 380 I = MAX( 1, J-KA ), J
1107 AB( KA+1+I-J, J ) = A( I, J )
1109 DO 390 I = MAX( 1, J-KB ), J
1110 BB( KB+1+I-J, J ) = B( I, J )
1115 DO 410 I = J, MIN( N, J+KA )
1116 AB( 1+I-J, J ) = A( I, J )
1118 DO 420 I = J, MIN( N, J+KB )
1119 BB( 1+I-J, J ) = B( I, J )
1124 CALL DSBGVD( 'v
', UPLO, N, KA, KB, AB, LDA, BB,
1125 $ LDB, D, Z, LDZ, WORK, NWORK, IWORK,
1127.NE.
IF( IINFO0 ) THEN
1128 WRITE( NOUNIT, FMT = 9999 )'dsbgvd(v,
' //
1129 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
1131.LT.
IF( IINFO0 ) THEN
1134 RESULT( NTEST ) = ULPINV
1141 CALL DSGT01( IBTYPE, UPLO, N, N, A, LDA, B, LDB, Z,
1142 $ LDZ, D, WORK, RESULT( NTEST ) )
1150 IF( LSAME( UPLO, 'u
' ) ) THEN
1152 DO 440 I = MAX( 1, J-KA ), J
1153 AB( KA+1+I-J, J ) = A( I, J )
1155 DO 450 I = MAX( 1, J-KB ), J
1156 BB( KB+1+I-J, J ) = B( I, J )
1161 DO 470 I = J, MIN( N, J+KA )
1162 AB( 1+I-J, J ) = A( I, J )
1164 DO 480 I = J, MIN( N, J+KB )
1165 BB( 1+I-J, J ) = B( I, J )
1170 CALL DSBGVX( 'v
', 'a
', UPLO, N, KA, KB, AB, LDA,
1171 $ BB, LDB, BP, MAX( 1, N ), VL, VU, IL,
1172 $ IU, ABSTOL, M, D, Z, LDZ, WORK,
1173 $ IWORK( N+1 ), IWORK, IINFO )
1174.NE.
IF( IINFO0 ) THEN
1175 WRITE( NOUNIT, FMT = 9999 )'dsbgvx(v,a
' //
1176 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
1178.LT.
IF( IINFO0 ) THEN
1181 RESULT( NTEST ) = ULPINV
1188 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
1189 $ LDZ, D, WORK, RESULT( NTEST ) )
1196 IF( LSAME( UPLO, 'u
' ) ) THEN
1198 DO 500 I = MAX( 1, J-KA ), J
1199 AB( KA+1+I-J, J ) = A( I, J )
1201 DO 510 I = MAX( 1, J-KB ), J
1202 BB( KB+1+I-J, J ) = B( I, J )
1207 DO 530 I = J, MIN( N, J+KA )
1208 AB( 1+I-J, J ) = A( I, J )
1210 DO 540 I = J, MIN( N, J+KB )
1211 BB( 1+I-J, J ) = B( I, J )
1218 CALL DSBGVX( 'v
', 'v
', UPLO, N, KA, KB, AB, LDA,
1219 $ BB, LDB, BP, MAX( 1, N ), VL, VU, IL,
1220 $ IU, ABSTOL, M, D, Z, LDZ, WORK,
1221 $ IWORK( N+1 ), IWORK, IINFO )
1222.NE.
IF( IINFO0 ) THEN
1223 WRITE( NOUNIT, FMT = 9999 )'dsbgvx(v,v
' //
1224 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
1226.LT.
IF( IINFO0 ) THEN
1229 RESULT( NTEST ) = ULPINV
1236 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
1237 $ LDZ, D, WORK, RESULT( NTEST ) )
1243 IF( LSAME( UPLO, 'u
' ) ) THEN
1245 DO 560 I = MAX( 1, J-KA ), J
1246 AB( KA+1+I-J, J ) = A( I, J )
1248 DO 570 I = MAX( 1, J-KB ), J
1249 BB( KB+1+I-J, J ) = B( I, J )
1254 DO 590 I = J, MIN( N, J+KA )
1255 AB( 1+I-J, J ) = A( I, J )
1257 DO 600 I = J, MIN( N, J+KB )
1258 BB( 1+I-J, J ) = B( I, J )
1263 CALL DSBGVX( 'v
', 'i
', UPLO, N, KA, KB, AB, LDA,
1264 $ BB, LDB, BP, MAX( 1, N ), VL, VU, IL,
1265 $ IU, ABSTOL, M, D, Z, LDZ, WORK,
1266 $ IWORK( N+1 ), IWORK, IINFO )
1267.NE.
IF( IINFO0 ) THEN
1268 WRITE( NOUNIT, FMT = 9999 )'dsbgvx(v,i
' //
1269 $ UPLO // ')
', IINFO, N, JTYPE, IOLDSD
1271.LT.
IF( IINFO0 ) THEN
1274 RESULT( NTEST ) = ULPINV
1281 CALL DSGT01( IBTYPE, UPLO, N, M, A, LDA, B, LDB, Z,
1282 $ LDZ, D, WORK, RESULT( NTEST ) )
1291 NTESTT = NTESTT + NTEST
1292 CALL DLAFTS( 'dsg
', N, N, JTYPE, NTEST, RESULT, IOLDSD,
1293 $ THRESH, NOUNIT, NERRS )
1299 CALL DLASUM( 'dsg
', NOUNIT, NERRS, NTESTT )
1305 9999 FORMAT( ' ddrvsg:
', A, ' returned info=
', I6, '.
', / 9X, 'n=
',
1306 $ I6, ', jtype=
', I6, ', iseed=(
', 3( I5, ',
' ), I5, ')
' )
subroutine dlabad(small, large)
DLABAD
subroutine dlacpy(uplo, m, n, a, lda, b, ldb)
DLACPY copies all or part of one two-dimensional array to another.
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 xerbla(srname, info)
XERBLA
subroutine dsbgv(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, info)
DSBGV
subroutine dspgv(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, info)
DSPGV
subroutine dsbgvd(jobz, uplo, n, ka, kb, ab, ldab, bb, ldbb, w, z, ldz, work, lwork, iwork, liwork, info)
DSBGVD
subroutine dspgvd(itype, jobz, uplo, n, ap, bp, w, z, ldz, work, lwork, iwork, liwork, info)
DSPGVD
subroutine dspgvx(itype, jobz, range, uplo, n, ap, bp, vl, vu, il, iu, abstol, m, w, z, ldz, work, iwork, ifail, info)
DSPGVX
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 dsygv(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, info)
DSYGV
subroutine dsygvd(itype, jobz, uplo, n, a, lda, b, ldb, w, work, lwork, iwork, liwork, info)
DSYGVD
subroutine dlasum(type, iounit, ie, nrun)
DLASUM
subroutine dsgt01(itype, uplo, n, m, a, lda, b, ldb, z, ldz, d, work, result)
DSGT01
subroutine dlafts(type, m, n, imat, ntests, result, iseed, thresh, iounit, ie)
DLAFTS
subroutine ddrvsg(nsizes, nn, ntypes, dotype, iseed, thresh, nounit, a, lda, b, ldb, d, z, ldz, ab, bb, ap, bp, work, nwork, iwork, liwork, result, info)
DDRVSG
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
subroutine dlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
DLATMS