357 SUBROUTINE zchkbb( NSIZES, MVAL, NVAL, NWDTHS, KK, NTYPES, DOTYPE,
358 $ NRHS, ISEED, THRESH, NOUNIT, A, LDA, AB, LDAB,
359 $ BD, BE, Q, LDQ, P, LDP, C, LDC, CC, WORK,
360 $ LWORK, RWORK, RESULT, INFO )
367 INTEGER INFO, LDA, LDAB, LDC, LDP, LDQ, LWORK, NOUNIT,
368 $ NRHS, NSIZES, NTYPES, NWDTHS
369 DOUBLE PRECISION THRESH
373 INTEGER ISEED( 4 ), KK( * ), MVAL( * ), NVAL( * )
374 DOUBLE PRECISION BD( * ), BE( * ), RESULT( * ), RWORK( * )
375 COMPLEX*16 A( LDA, * ), AB( LDAB, * ), C( LDC, * ),
376 $ cc( ldc, * ), p( ldp, * ), q( ldq, * ),
383 COMPLEX*16 CZERO, CONE
384 PARAMETER ( CZERO = ( 0.0d+0, 0.0d+0 ),
385 $ cone = ( 1.0d+0, 0.0d+0 ) )
386 DOUBLE PRECISION ZERO, ONE
387 parameter( zero = 0.0d+0, one = 1.0d+0 )
389 parameter( maxtyp = 15 )
392 LOGICAL BADMM, BADNN, BADNNB
393 INTEGER I, IINFO, IMODE, ITYPE, J, JCOL, JR, JSIZE,
394 $ JTYPE, JWIDTH, K, KL, KMAX, KU, M, MMAX, MNMAX,
395 $ mnmin, mtypes, n, nerrs, nmats, nmax, ntest,
397 DOUBLE PRECISION AMNINV, ANORM, , OVFL, RTOVFL, RTUNFL, ULP,
401 INTEGER IDUMMA( 1 ), IOLDSD( 4 ), KMAGN( ),
402 $ KMODE( MAXTYP ), ( MAXTYP )
413 INTRINSIC abs, dble,
max,
min, sqrt
416 DATA ktype / 1, 2, 5*4, 5*6, 3*9 /
417 DATA kmagn / 2*1, 3*1, 2, 3, 3*1, 2, 3, 1, 2, 3 /
418 DATA kmode / 2*0, 4, 3, 1, 4, 4, 4, 3, 1, 4, 4, 0,
436 mmax =
max( mmax, mval( j ) )
439 nmax =
max( nmax, nval( j ) )
442 mnmax =
max( mnmax,
min( mval( j ), nval( j ) ) )
448 kmax =
max( kmax, kk( j ) )
455 IF( nsizes.LT.0 )
THEN
457 ELSE IF( badmm )
THEN
459 ELSE IF( badnn )
THEN
461 ELSE IF( nwdths.LT.0 )
THEN
463 ELSE IF( badnnb )
THEN
465 ELSE IF( ntypes.LT.0 )
THEN
467 ELSE IF( nrhs.LT.0 )
THEN
469 ELSE IF( lda.LT.nmax )
THEN
471 ELSE IF( ldab.LT.2*kmax+1 )
THEN
473 ELSE IF( ldq.LT.nmax )
THEN
475 ELSE IF( ldp.LT.nmax )
THEN
477 ELSE IF( ldc.LT.nmax )
THEN
479 ELSE IF( (
max( lda, nmax )+1 )*nmax.GT.lwork )
THEN
490.EQ..OR..EQ..OR..EQ.
IF( NSIZES0 NTYPES0 NWDTHS0 )
495 UNFL = DLAMCH( 'safe minimum
' )
497 ULP = DLAMCH( 'epsilon
' )*DLAMCH( 'base
' )
499 RTUNFL = SQRT( UNFL )
500 RTOVFL = SQRT( OVFL )
507 DO 160 JSIZE = 1, NSIZES
511 AMNINV = ONE / DBLE( MAX( 1, M, N ) )
513 DO 150 JWIDTH = 1, NWDTHS
515.GE..AND..GE.
IF( KM KN )
517 KL = MAX( 0, MIN( M-1, K ) )
518 KU = MAX( 0, MIN( N-1, K ) )
520.NE.
IF( NSIZES1 ) THEN
521 MTYPES = MIN( MAXTYP, NTYPES )
523 MTYPES = MIN( MAXTYP+1, NTYPES )
526 DO 140 JTYPE = 1, MTYPES
527.NOT.
IF( DOTYPE( JTYPE ) )
533 IOLDSD( J ) = ISEED( J )
551.GT.
IF( MTYPESMAXTYP )
554 ITYPE = KTYPE( JTYPE )
555 IMODE = KMODE( JTYPE )
559 GO TO ( 40, 50, 60 )KMAGN( JTYPE )
566 ANORM = ( RTOVFL*ULP )*AMNINV
570 ANORM = RTUNFL*MAX( M, N )*ULPINV
575 CALL ZLASET( 'full
', LDA, N, CZERO, CZERO, A, LDA )
576 CALL ZLASET( 'full
', LDAB, N, CZERO, CZERO, AB, LDAB )
584.EQ.
IF( ITYPE1 ) THEN
587.EQ.
ELSE IF( ITYPE2 ) THEN
592 A( JCOL, JCOL ) = ANORM
595.EQ.
ELSE IF( ITYPE4 ) THEN
599 CALL ZLATMS( M, N, 's
', ISEED, 'n
', RWORK, IMODE,
600 $ COND, ANORM, 0, 0, 'n
', A, LDA, WORK,
603.EQ.
ELSE IF( ITYPE6 ) THEN
607 CALL ZLATMS( M, N, 's
', ISEED, 'n
', RWORK, IMODE,
608 $ COND, ANORM, KL, KU, 'n
', A, LDA, WORK,
611.EQ.
ELSE IF( ITYPE9 ) THEN
615 CALL ZLATMR( M, N, 's
', ISEED, 'n
', WORK, 6, ONE,
616 $ CONE, 't
', 'n
', WORK( N+1 ), 1, ONE,
617 $ WORK( 2*N+1 ), 1, ONE, 'n
', IDUMMA, KL,
618 $ KU, ZERO, ANORM, 'n
', A, LDA, IDUMMA,
628 CALL ZLATMR( M, NRHS, 's
', ISEED, 'n
', WORK, 6, ONE,
629 $ CONE, 't
', 'n
', WORK( M+1 ), 1, ONE,
630 $ WORK( 2*M+1 ), 1, ONE, 'n
', IDUMMA, M, NRHS,
631 $ ZERO, ONE, 'no
', C, LDC, IDUMMA, IINFO )
633.NE.
IF( IINFO0 ) THEN
634 WRITE( NOUNIT, FMT = 9999 )'generator
', IINFO, N,
645 DO 100 I = MAX( 1, J-KU ), MIN( M, J+KL )
646 AB( KU+1+I-J, J ) = A( I, J )
652 CALL ZLACPY( 'full
', M, NRHS, C, LDC, CC, LDC )
656 CALL ZGBBRD( 'b
', M, N, NRHS, KL, KU, AB, LDAB, BD, BE,
657 $ Q, LDQ, P, LDP, CC, LDC, WORK, RWORK,
660.NE.
IF( IINFO0 ) THEN
661 WRITE( NOUNIT, FMT = 9999 )'zgbbrd', IINFO, N, JTYPE,
664.LT.
IF( IINFO0 ) THEN
677 CALL ZBDT01( M, N, -1, A, LDA, Q, LDQ, BD, BE, P, LDP,
678 $ WORK, RWORK, RESULT( 1 ) )
679 CALL ZUNT01( 'columns
', M, M, Q, LDQ, WORK, LWORK, RWORK,
681 CALL ZUNT01( 'rows
', N, N, P, LDP, WORK, LWORK, RWORK,
683 CALL ZBDT02( M, NRHS, C, LDC, CC, LDC, Q, LDQ, WORK,
684 $ RWORK, RESULT( 4 ) )
690 NTESTT = NTESTT + NTEST
695.GE.
IF( RESULT( JR )THRESH ) THEN
697 $ CALL DLAHD2( NOUNIT, 'zbb
' )
699 WRITE( NOUNIT, FMT = 9998 )M, N, K, IOLDSD, JTYPE,
710 CALL DLASUM( 'zbb
', NOUNIT, NERRS, NTESTT )
713 9999 FORMAT( ' zchkbb:
', A, ' returned info=
', I5, '.
', / 9X, 'm=
',
714 $ I5, ' n=
', I5, ' k=
', I5, ', jtype=
', I5, ', iseed=(
',
715 $ 3( I5, ',
' ), I5, ')
' )
716 9998 FORMAT( ' m =
', I4, ' n=
', I4, ', k=
', I3, ',
seed=
',
717 $ 4( I4, ',
' ), ' type ', I2, ', test(
', I2, ')=
', G10.3 )
subroutine zgbbrd(vect, m, n, ncc, kl, ku, ab, ldab, d, e, q, ldq, pt, ldpt, c, ldc, work, rwork, info)
ZGBBRD
subroutine zchkbb(nsizes, mval, nval, nwdths, kk, ntypes, dotype, nrhs, iseed, thresh, nounit, a, lda, ab, ldab, bd, be, q, ldq, p, ldp, c, ldc, cc, work, lwork, rwork, result, info)
ZCHKBB
subroutine zlatmr(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)
ZLATMR
subroutine zlatms(m, n, dist, iseed, sym, d, mode, cond, dmax, kl, ku, pack, a, lda, work, info)
ZLATMS