489 SUBROUTINE schkbd( NSIZES, MVAL, NVAL, NTYPES, DOTYPE, NRHS,
490 $ ISEED, THRESH, A, LDA, BD, BE, S1, S2, X, LDX,
491 $ Y, Z, Q, LDQ, PT, LDPT, U, VT, WORK, LWORK,
492 $ IWORK, NOUT, INFO )
499 INTEGER INFO, LDA, LDPT, LDQ, LDX, LWORK, NOUT, NRHS,
505 INTEGER ISEED( 4 ), IWORK( * ), MVAL( * ), NVAL( * )
506 REAL A( LDA, * ), BD( * ), BE( * ), PT( LDPT, * ),
507 $ q( ldq, * ), s1( * ), s2( * ), u( ldpt, * ),
508 $ vt( ldpt, * ), work( * ), x( ldx, * ),
509 $ y( ldx, * ), z( ldx, * )
515 REAL ZERO, ONE, TWO, HALF
516 PARAMETER ( ZERO = 0.0e0, one = 1.0e0, two = 2.0e0,
519 parameter( maxtyp = 16 )
522 LOGICAL BADMM, BADNN, BIDIAG
525 INTEGER I, IINFO, IL, IMODE, ITEMP, ITYPE, , IWBD,
526 $ iwbe, iwbs, iwbz, iwwork, j, jcol, jsize,
527 $ jtype, log2ui, m, minwrk, mmax, mnmax, mnmin,
528 $ mnmin2, mq, mtypes, n, nfail, nmax,
530 REAL ABSTOL, AMNINV, ANORM, COND, OVFL, RTOVFL,
531 $ RTUNFL, TEMP1, TEMP2, ULP, ULPINV, UNFL,
535 INTEGER IDUM( 1 ), IOLDSD( 4 ), ISEED2( 4 ),
536 $ KMAGN( MAXTYP ), KMODE( MAXTYP ),
538 REAL DUM( 1 ), DUMMA( 1 ), RESULT( 40 )
541 REAL SLAMCH, SLARND, SSXT1
542 EXTERNAL SLAMCH, SLARND, SSXT1
551 INTRINSIC abs, exp, int, log,
max,
min, sqrt
559 COMMON / infoc / infot, nunit, ok, lerr
560 COMMON / srnamc / srnamt
563 DATA ktype / 1, 2, 5*4, 5*6, 3*9, 10 /
564 DATA kmagn / 2*1, 3*1, 2, 3, 3*1, 2, 3, 1, 2, 3, 0 /
565 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
581 mmax =
max( mmax, mval( j ) )
584 nmax =
max( nmax, nval( j ) )
587 mnmax =
max( mnmax,
min( mval( j ), nval( j ) ) )
588 minwrk =
max( minwrk, 3*( mval( j )+nval( j ) ),
589 $ mval( j )*( mval( j )+
max( mval( j ), nval( j ),
590 $ nrhs )+1 )+nval( j )*
min( nval( j ), mval( j ) ) )
595 IF( nsizes.LT.0 )
THEN
597 ELSE IF( badmm )
THEN
599 ELSE IF( badnn )
THEN
601 ELSE IF( ntypes.LT.0 )
THEN
603 ELSE IF( nrhs.LT.0 )
THEN
605 ELSE IF( lda.LT.mmax )
THEN
607 ELSE IF( ldx.LT.mmax )
THEN
609 ELSE IF( ldq.LT.mmax )
THEN
611 ELSE IF( ldpt.LT.mnmax )
THEN
613 ELSE IF( minwrk.GT.lwork )
THEN
618 CALL xerbla(
'SCHKBD', -info )
624 path( 1: 1 ) =
'Single precision'
628 unfl = slamch(
'Safe minimum' )
629 ovfl = slamch(
'Overflow' )
631 ulp = slamch(
'Precision' )
633 log2ui = int( log( ulpinv ) / log( two ) )
634 rtunfl = sqrt( unfl )
635 rtovfl = sqrt( ovfl )
641 DO 300 jsize = 1, nsizes
645 amninv = one /
max( m, n, 1 )
647 IF( nsizes.NE.1 )
THEN
648 mtypes =
min( maxtyp, ntypes )
650 mtypes =
min( maxtyp+1, ntypes )
653 DO 290 jtype = 1, mtypes
654 IF( .NOT.dotype( jtype ) )
658 ioldsd( j ) = iseed( j )
683 IF( mtypes.GT.maxtyp )
686 itype = ktype( jtype )
687 imode = kmode( jtype )
691 GO TO ( 40, 50, 60 )kmagn( jtype )
698 anorm = ( rtovfl*ulp )*amninv
702 anorm = rtunfl*
max( m, n )*ulpinv
707 CALL slaset(
'Full', lda, n, zero, zero, a, lda )
712 IF( itype.EQ.1 )
THEN
718 ELSE IF( itype.EQ.2 )
THEN
722 DO 80 jcol = 1, mnmin
723 a( jcol, jcol ) = anorm
726 ELSE IF( itype.EQ.4 )
THEN
730 CALL slatms( mnmin, mnmin,
'S', iseed,
'N', work, imode,
731 $ cond, anorm, 0, 0,
'N', a, lda,
732 $ work( mnmin+1 ), iinfo )
734 ELSE IF( itype.EQ.5 )
THEN
738 CALL slatms( mnmin, mnmin,
'S', iseed,
'S', work, imode,
739 $ cond, anorm, m, n,
'N', a, lda,
740 $ work( mnmin+1 ), iinfo )
742 ELSE IF( itype.EQ.6 )
THEN
746 CALL slatms( m, n,
'S', iseed,
'N', work, imode, cond,
747 $ anorm, m, n,
'N', a, lda, work( mnmin+1 ),
750 ELSE IF( itype.EQ.7 )
THEN
754 CALL slatmr( mnmin, mnmin,
'S', iseed,
'N', work, 6, one,
755 $ one,
'T',
'N', work( mnmin+1 ), 1, one,
756 $ work( 2*mnmin+1 ), 1, one,
'N', iwork, 0, 0,
757 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
759 ELSE IF( itype.EQ.8 )
THEN
763 CALL slatmr( mnmin, mnmin,
'S', iseed,
'S', work, 6, one,
764 $ one,
'T',
'N', work( mnmin+1 ), 1, one,
765 $ work( m+mnmin+1 ), 1, one,
'N', iwork, m, n,
766 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
768 ELSE IF( itype.EQ.9 )
THEN
772 CALL slatmr( m, n,
'S', iseed,
'N', work, 6, one, one,
773 $
'T',
'N', work( mnmin+1 ), 1, one,
774 $ work( m+mnmin+1 ), 1, one,
'N', iwork, m, n,
775 $ zero, anorm,
'NO', a, lda, iwork, iinfo )
777 ELSE IF( itype.EQ.10 )
THEN
781 temp1 = -two*log( ulp )
783 bd( j ) = exp( temp1*slarnd( 2, iseed ) )
785 $ be( j ) = exp( temp1*slarnd( 2, iseed ) )
799 IF( iinfo.EQ.0 )
THEN
804 CALL slatmr( mnmin, nrhs,
'S', iseed,
'N', work, 6,
805 $ one, one,
'T',
'N', work( mnmin+1 ), 1,
806 $ one, work( 2*mnmin+1 ), 1, one,
'N',
807 $ iwork, mnmin, nrhs, zero, one,
'NO', y,
808 $ ldx, iwork, iinfo )
810 CALL slatmr( m, nrhs,
'S', iseed,
'N', work, 6, one,
811 $ one,
'T',
'N', work( m+1 ), 1, one,
812 $ work( 2*m+1 ), 1, one,
'N', iwork, m,
813 $ nrhs, zero, one,
'NO', x, ldx, iwork,
820 IF( iinfo.NE.0 )
THEN
821 WRITE( nout, fmt = 9998 )
'Generator', iinfo, m, n,
831 IF( .NOT.bidiag )
THEN
836 CALL slacpy(
' ', m, n, a, lda, q, ldq )
837 CALL sgebrd( m, n, q, ldq, bd, be, work, work( mnmin+1 ),
838 $ work( 2*mnmin+1 ), lwork-2*mnmin, iinfo )
842 IF( iinfo.NE.0 )
THEN
843 WRITE( nout, fmt = 9998 )
'SGEBRD', iinfo, m, n,
849 CALL slacpy(
' ', m, n, q, ldq, pt, ldpt )
861 CALL sorgbr(
'Q', m, mq, n, q,
862 $ work( 2*mnmin+1 ), lwork-2*mnmin, iinfo )
866 IF( iinfo.NE.0 )
THEN
867 WRITE( nout, fmt = 9998 )
'SORGBR(Q)', iinfo, m, n,
875 CALL sorgbr(
'P', mnmin, n, m, pt, ldpt, work( mnmin+1 ),
880 IF( iinfo.NE.0 )
THEN
881 WRITE( nout, fmt = 9998 )
'SORGBR(P)', iinfo, m, n,
889 CALL sgemm(
'Transpose',
'No transpose', m, nrhs, m, one,
890 $ q, ldq, x, ldx, zero, y, ldx )
896 CALL sbdt01( m, n, 1, a, lda, q, ldq, bd
897 $ work, result( 1 ) )
898 CALL sort01(
'Columns', m, mq, q, ldq, work, lwork,
907 CALL scopy( mnmin, bd, 1, s1, 1 )
909 $
CALL scopy( mnmin-1, be, 1, work, 1 )
910 CALL slacpy(
' ', m, nrhs, y, ldx, z, ldx )
911 CALL slaset(
'Full', mnmin, mnmin, zero
912 CALL slaset(
'Full', mnmin, mnmin, zero, one, vt, ldpt )
914 CALL sbdsqr( uplo, mnmin, mnmin, mnmin, nrhs, s1, work, vt,
915 $ ldpt, u, ldpt, z, ldx, work( mnmin+1 ), iinfo )
919 IF( iinfo.NE.0 )
THEN
920 WRITE( nout, fmt
'SBDSQR(vects)', iinfo, m, n,
923 IF( iinfo.LT.0 )
THEN
934 CALL scopy( mnmin, bd, 1, s2, 1 )
936 $
CALL scopy( mnmin-1, be,
938 CALL sbdsqr( uplo, mnmin, 0, 0, 0, s2, work, vt, ldpt, u,
943 IF( iinfo.NE.0 )
THEN
944 WRITE( nout, fmt = 9998 )
'SBDSQR(values)', iinfo, m, n,
960 CALL sbdt03( uplo, mnmin, 1, bd, be, u, ldpt, s1, vt, ldpt,
961 $ work, result( 4 ) )
962 CALL sbdt02( mnmin, nrhs, y, ldx, z, ldx, u, ldpt, work,
964 CALL sort01(
'Columns', mnmin, mnmin, u, ldpt, work, lwork,
966 CALL sort01(
'Rows', mnmin, mnmin, vt, ldpt, work, lwork,
973 DO 110 i = 1, mnmin - 1
974 IF( s1( i ).LT.s1( i+1 ) )
975 $ result( 8 ) = ulpinv
976 IF( s1( i ).LT.zero )
977 $ result( 8 ) = ulpinv
979 IF( mnmin.GE.1 )
THEN
980 IF( s1( mnmin ).LT.zero )
981 $ result( 8 ) = ulpinv
989 temp1 = abs( s1( j )-s2( j ) ) /
990 $
max( sqrt( unfl )*
max( s1( 1 ), one ),
991 $ ulp*
max( abs( s1( j ) ), abs( s2( j ) ) ) )
992 temp2 =
max( temp1, temp2 )
1000 temp1 = thresh*( half-ulp )
1002 DO 130 j = 0, log2ui
1010 result( 10 ) = temp1
1015 IF( .NOT.bidiag )
THEN
1016 CALL scopy( mnmin, bd, 1, s2, 1 )
1018 $
CALL scopy( mnmin-1, be, 1, work, 1 )
1020 CALL sbdsqr( uplo, mnmin, n, m, nrhs, s2, work, pt, ldpt,
1021 $ q, ldq, y, ldx, work( mnmin+1 ), iinfo )
1028 CALL sbdt01( m, n, 0, a, lda, q, ldq, s2, dumma, pt,
1029 $ ldpt, work, result( 11 ) )
1030 CALL sbdt02( m, nrhs, x, ldx, y, ldx, q, ldq, work,
1032 CALL sort01(
'Columns', m, mq, q, ldq, work, lwork,
1034 CALL sort01(
'Rows', mnmin, n, pt, ldpt, work, lwork,
1041 CALL scopy( mnmin, bd, 1, s1, 1 )
1043 $
CALL scopy( mnmin-1, be, 1, work, 1 )
1044 CALL slaset(
'Full', mnmin, mnmin, zero, one, u, ldpt )
1045 CALL slaset(
'Full', mnmin, mnmin, zero, one, vt, ldpt )
1047 CALL sbdsdc( uplo,
'I', mnmin, s1, work, u, ldpt, vt, ldpt,
1048 $ dum, idum, work( mnmin+1 ), iwork, iinfo )
1052 IF( iinfo.NE.0 )
THEN
1053 WRITE( nout, fmt = 9998 )
'SBDSDC(vects)', iinfo, m, n,
1056 IF( iinfo.LT.0 )
THEN
1059 result( 15 ) = ulpinv
1067 CALL scopy( mnmin, bd, 1, s2, 1 )
1069 $
CALL scopy( mnmin-1, be, 1, work, 1 )
1071 CALL sbdsdc( uplo,
'N', mnmin, s2, work, dum, 1, dum, 1,
1072 $ dum, idum, work( mnmin+1 ), iwork, iinfo )
1076 IF( iinfo.NE.0 )
THEN
1077 WRITE( nout, fmt = 9998 )
'SBDSDC(values)', iinfo, m, n,
1080 IF( iinfo.LT.0 )
THEN
1083 result( 18 ) = ulpinv
1092 CALL sbdt03( uplo, mnmin, 1, bd, be, u, ldpt, s1, vt, ldpt,
1093 $ work, result( 15 ) )
1094 CALL sort01(
'Columns', mnmin, mnmin, u, ldpt, work, lwork,
1096 CALL sort01(
'Rows', mnmin, mnmin, vt, ldpt, work, lwork,
1103 DO 150 i = 1, mnmin - 1
1104 IF( s1( i ).LT.s1( i+1 ) )
1105 $ result( 18 ) = ulpinv
1106 IF( s1( i ).LT.zero )
1107 $ result( 18 ) = ulpinv
1109 IF( mnmin.GE.1 )
THEN
1110 IF( s1( mnmin ).LT.zero )
1111 $ result( 18 ) = ulpinv
1119 temp1 = abs( s1( j )-s2( j ) ) /
1120 $
max( sqrt( unfl )*
max( s1( 1 ), one ),
1121 $ ulp*
max( abs( s1( 1 ) ), abs( s2( 1 ) ) ) )
1122 temp2 =
max( temp1, temp2 )
1125 result( 19 ) = temp2
1131 IF( jtype.EQ.10 .OR. jtype.EQ.16 )
THEN
1135 result( 20:34 ) = zero
1143 iwwork = iwbz + 2*mnmin*(mnmin+1)
1144 mnmin2 =
max( 1,mnmin*2 )
1146 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1148 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1150 CALL sbdsvdx( uplo,
'V',
'A', mnmin, work( iwbd ),
1151 $ work( iwbe ), zero, zero, 0, 0, ns1, s1,
1152 $ work( iwbz ), mnmin2, work( iwwork ),
1157 IF( iinfo.NE.0 )
THEN
1158 WRITE( nout, fmt = 9998 )
'SBDSVDX(vects,A)', iinfo, m, n,
1161 IF( iinfo.LT.0 )
THEN
1164 result( 20 ) = ulpinv
1171 CALL scopy( mnmin, work( j ), 1, u( 1,i ), 1 )
1173 CALL scopy( mnmin, work( j ), 1, vt( i,1 ), ldpt )
1180 IF( jtype.EQ.9 )
THEN
1188 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1190 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1192 CALL sbdsvdx( uplo,
'N',
'A', mnmin, work( iwbd ),
1193 $ work( iwbe ), zero, zero, 0, 0, ns2, s2,
1194 $ work( iwbz ), mnmin2, work( iwwork ),
1199 IF( iinfo.NE.0 )
THEN
1200 WRITE( nout, fmt = 9998 )
'SBDSVDX(values,A)', iinfo,
1201 $ m, n, jtype, ioldsd
1203 IF( iinfo.LT.0 )
THEN
1206 result( 24 ) = ulpinv
1213 CALL scopy( mnmin, s1, 1, work( iwbs ), 1 )
1222 CALL sbdt03( uplo, mnmin, 1, bd, be, u, ldpt, s1, vt,
1223 $ ldpt, work( iwbs+mnmin ), result( 20 ) )
1224 CALL sort01(
'Columns', mnmin, mnmin, u, ldpt,
1225 $ work( iwbs+mnmin ), lwork-mnmin,
1227 CALL sort01(
'Rows', mnmin, mnmin, vt, ldpt,
1228 $ work( iwbs+mnmin ), lwork-mnmin,
1232 DO 180 i = 1, mnmin - 1
1233 IF( s1( i ).LT.s1( i+1 ) )
1234 $ result( 23 ) = ulpinv
1235 IF( s1( i ).LT.zero )
1236 $ result( 23 ) = ulpinv
1238 IF( mnmin.GE.1 )
THEN
1239 IF( s1( mnmin ).LT.zero )
1240 $ result( 23 ) = ulpinv
1245 temp1 = abs( s1( j )-s2( j ) ) /
1246 $
max( sqrt( unfl )*
max( s1( 1 ), one ),
1247 $ ulp*
max( abs( s1( 1 ) ), abs( s2( 1 ) ) ) )
1248 temp2 =
max( temp1, temp2 )
1250 result( 24 ) = temp2
1258 iseed2( i ) = iseed( i )
1260 IF( mnmin.LE.1 )
THEN
1264 il = 1 + int( ( mnmin-1 )*slarnd( 1, iseed2 ) )
1265 iu = 1 + int( ( mnmin-1 )*slarnd( 1, iseed2 ) )
1273 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1275 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1277 CALL sbdsvdx( uplo,
'V',
'I', mnmin, work( iwbd ),
1278 $ work( iwbe ), zero, zero, il, iu, ns1, s1,
1279 $ work( iwbz ), mnmin2, work( iwwork ),
1284 IF( iinfo.NE.0 )
THEN
1285 WRITE( nout, fmt = 9998 )
'SBDSVDX(vects,I)', iinfo,
1286 $ m, n, jtype, ioldsd
1288 IF( iinfo.LT.0 )
THEN
1291 result( 25 ) = ulpinv
1298 CALL scopy( mnmin, work( j ), 1, u( 1,i ), 1 )
1300 CALL scopy( mnmin, work( j ), 1, vt( i,1 ), ldpt )
1307 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1309 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1311 CALL sbdsvdx( uplo,
'N',
'I', mnmin, work( iwbd ),
1312 $ work( iwbe ), zero, zero, il, iu, ns2, s2,
1313 $ work( iwbz ), mnmin2, work( iwwork ),
1318 IF( iinfo.NE.0 )
THEN
1319 WRITE( nout, fmt = 9998 )
'SBDSVDX(values,I)', iinfo,
1320 $ m, n, jtype, ioldsd
1322 IF( iinfo.LT.0 )
THEN
1325 result( 29 ) = ulpinv
1337 CALL sbdt04( uplo, mnmin, bd, be, s1, ns1, u,
1338 $ ldpt, vt, ldpt, work( iwbs+mnmin ),
1340 CALL sort01(
'Columns', mnmin, ns1, u, ldpt,
1341 $ work( iwbs+mnmin ), lwork-mnmin,
1343 CALL sort01(
'Rows', ns1, mnmin, vt, ldpt,
1344 $ work( iwbs+mnmin ), lwork-mnmin,
1348 DO 220 i = 1, ns1 - 1
1349 IF( s1( i ).LT.s1( i+1 ) )
1350 $ result( 28 ) = ulpinv
1351 IF( s1( i ).LT.zero )
1352 $ result( 28 ) = ulpinv
1355 IF( s1( ns1 ).LT.zero )
1356 $ result( 28 ) = ulpinv
1361 temp1 = abs( s1( j )-s2( j ) ) /
1362 $
max( sqrt( unfl )*
max( s1( 1 ), one ),
1363 $ ulp*
max( abs( s1( 1 ) ), abs( s2( 1 ) ) ) )
1364 temp2 =
max( temp1, temp2 )
1366 result( 29 ) = temp2
1372 CALL scopy( mnmin, work( iwbs ), 1, s1, 1 )
1374 IF( mnmin.GT.0 )
THEN
1376 vu = s1( il ) +
max( half*abs( s1( il )-s1( il-1 ) ),
1377 $ ulp*anorm, two*rtunfl )
1379 vu = s1( 1 ) +
max( half*abs( s1( mnmin )-s1( 1 ) ),
1380 $ ulp*anorm, two*rtunfl )
1382 IF( iu.NE.ns1 )
THEN
1383 vl = s1( iu ) -
max( ulp*anorm, two*rtunfl,
1384 $ half*abs( s1( iu+1 )-s1( iu ) ) )
1386 vl = s1( ns1 ) -
max( ulp*anorm, two*rtunfl,
1387 $ half*abs( s1( mnmin )-s1( 1 ) ) )
1391 IF( vl.GE.vu ) vu =
max( vu*2, vu+vl+half )
1397 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1399 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1401 CALL sbdsvdx( uplo,
'V',
'V', mnmin, work( iwbd ),
1402 $ work( iwbe ), vl, vu, 0, 0, ns1, s1,
1403 $ work( iwbz ), mnmin2, work( iwwork ),
1408 IF( iinfo.NE.0 )
THEN
1409 WRITE( nout, fmt = 9998 )
'SBDSVDX(vects,V)', iinfo,
1410 $ m, n, jtype, ioldsd
1412 IF( iinfo.LT.0 )
THEN
1415 result( 30 ) = ulpinv
1422 CALL scopy( mnmin, work( j ), 1, u( 1,i ), 1 )
1424 CALL scopy( mnmin, work( j ), 1, vt( i,1 ), ldpt )
1431 CALL scopy( mnmin, bd, 1, work( iwbd ), 1 )
1433 $
CALL scopy( mnmin-1, be, 1, work( iwbe ), 1 )
1435 CALL sbdsvdx( uplo, 'n
', 'v
', MNMIN, WORK( IWBD ),
1436 $ WORK( IWBE ), VL, VU, 0, 0, NS2, S2,
1437 $ WORK( IWBZ ), MNMIN2, WORK( IWWORK ),
1442.NE.
IF( IINFO0 ) THEN
1443 WRITE( NOUT, FMT = 9998 )'sbdsvdx(values,v)
', IINFO,
1444 $ M, N, JTYPE, IOLDSD
1446.LT.
IF( IINFO0 ) THEN
1449 RESULT( 34 ) = ULPINV
1461 CALL SBDT04( UPLO, MNMIN, BD, BE, S1, NS1, U,
1462 $ LDPT, VT, LDPT, WORK( IWBS+MNMIN ),
1464 CALL SORT01( 'columns
', MNMIN, NS1, U, LDPT,
1465 $ WORK( IWBS+MNMIN ), LWORK-MNMIN,
1467 CALL SORT01( 'rows
', NS1, MNMIN, VT, LDPT,
1468 $ WORK( IWBS+MNMIN ), LWORK-MNMIN,
1472 DO 250 I = 1, NS1 - 1
1473.LT.
IF( S1( I )S1( I+1 ) )
1474 $ RESULT( 28 ) = ULPINV
1475.LT.
IF( S1( I )ZERO )
1476 $ RESULT( 28 ) = ULPINV
1479.LT.
IF( S1( NS1 )ZERO )
1480 $ RESULT( 28 ) = ULPINV
1485 TEMP1 = ABS( S1( J )-S2( J ) ) /
1486 $ MAX( SQRT( UNFL )*MAX( S1( 1 ), ONE ),
1487 $ ULP*MAX( ABS( S1( 1 ) ), ABS( S2( 1 ) ) ) )
1488 TEMP2 = MAX( TEMP1, TEMP2 )
1490 RESULT( 34 ) = TEMP2
1497.GE.
IF( RESULT( J )THRESH ) THEN
1499 $ CALL SLAHD2( NOUT, PATH )
1500 WRITE( NOUT, FMT = 9999 )M, N, JTYPE, IOLDSD, J,
1505.NOT.
IF( BIDIAG ) THEN
1516 CALL ALASUM( PATH, NOUT, NFAIL, NTEST, 0 )
1522 9999 FORMAT( ' m=
', I5, ', n=
', I5, ',
type ', I2, ',
seed=
',
1523 $ 4( I4, ',
' ), ' test(
', I2, ')=
', G11.4 )
1524 9998 FORMAT( ' schkbd:
', A, ' returned info=
', I6, '.
', / 9X, 'm=
',
1525 $ I6, ', n=
', I6, ', jtype=
', I6, ', iseed=(
', 3( I5, ',
' ),