432 DOUBLE PRECISION ZERO
433 parameter( zero = 0.0d0 )
435 DOUBLE PRECISION EPS, THRESH
436 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
437 LOGICAL FATAL, REWI, TRACE
440 DOUBLE PRECISION A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
441 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
442 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
443 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
444 $ CS( NMAX*NMAX ), CT( NMAX ), G( NMAX )
445 INTEGER IDIM( NIDIM )
447 DOUBLE PRECISION ALPHA, ALS, BETA, BLS, ERR, ERRMAX
448 INTEGER I, IA, IB, ICA, ICB, IK, IM, IN, K, KS, LAA,
449 $ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, M,
450 $ MA, MB, MS, N, NA, NARGS, NB, NC, NS
451 LOGICAL NULL, RESET, SAME, TRANA, TRANB
452 CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB
467 COMMON /infoc/infot, noutc, ok
490 null = n.LE.0.OR.m.LE.0
496 transa = ich( ica: ica )
497 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
517 CALL dmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
521 transb = ich( icb: icb )
522 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
542 CALL dmake(
'GE',
' ',
' ', mb, nb, b, nmax, bb,
553 CALL dmake(
'GE',
' ',
' ', m, n, c, nmax,
554 $ cc, ldc, reset, zero )
584 $
CALL dprcn1(ntra, nc, sname, iorder,
585 $ transa, transb, m, n, k, alpha, lda,
589 CALL cdgemm( iorder, transa, transb, m, n,
590 $ k, alpha, aa, lda, bb, ldb,
596 WRITE( nout, fmt = 9994 )
603 isame( 1 ) = transa.EQ.tranas
604 isame( 2 ) = transb.EQ.tranbs
608 isame( 6 ) = als.EQ.alpha
609 isame( 7 ) =
lde( as, aa, laa )
610 isame( 8 ) = ldas.EQ.lda
611 isame( 9 ) =
lde( bs, bb, lbb )
612 isame( 10 ) = ldbs.EQ.ldb
613 isame( 11 ) = bls.EQ.beta
615 isame( 12 ) =
lde( cs, cc, lcc )
617 isame( 12 ) =
lderes(
'GE',
' ', m, n, cs,
620 isame( 13 ) = ldcs.EQ.ldc
627 same = same.AND.isame( i )
628 IF( .NOT.isame( i ) )
629 $
WRITE( nout, fmt = 9998 )i
640 CALL dmmch( transa, transb, m, n, k,
641 $ alpha, a, nmax, b, nmax, beta,
642 $ c, nmax, ct, g, cc, ldc, eps,
643 $ err, fatal, nout, .true. )
644 errmax = max( errmax, err )
667 IF( errmax.LT.thresh )
THEN
668 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
669 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
671 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
672 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
677 WRITE( nout, fmt = 9996 )sname
678 CALL dprcn1(nout, nc, sname, iorder, transa, transb,
679 $ m, n, k, alpha, lda, ldb, beta, ldc)
684 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
685 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
686 $
'RATIO ', f8.2,
' - SUSPECT *******' )
687 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
688 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
689 $
'RATIO ', f8.2,
' - SUSPECT *******' )
690 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
691 $
' (', i6,
' CALL',
'S)' )
692 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
693 $
' (', i6,
' CALL',
'S)' )
694 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
695 $
'ANGED INCORRECTLY *******' )
696 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
697 9995
FORMAT( 1x, i6,
': ', a12,
'(''', a1,
''',''', a1,
''',',
698 $ 3( i3,
',' ), f4.1,
', A,', i3,
', B,', i3,
',', f4.1,
', ',
700 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',