418 parameter( zero = ( 0.0, 0.0 ) )
420 parameter( rzero = 0.0 )
423 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA
424 LOGICAL FATAL, REWI, TRACE
427 COMPLEX A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
428 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
429 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
430 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
431 $ CS( NMAX*NMAX ), CT( NMAX )
433 INTEGER IDIM( NIDIM )
435 COMPLEX ALPHA, ALS, BETA, BLS
437 INTEGER I, IA, IB, ICA, ICB, IK, IM, IN, K, KS, LAA,
438 $ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, M,
439 $ MA, MB, MS, N, NA, NARGS, NB, NC, NS
440 LOGICAL NULL, RESET, SAME, TRANA, TRANB
441 CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB
456 COMMON /infoc/infot, noutc, ok, lerr
479 null = n.LE.0.OR.m.LE.0
485 transa = ich( ica: ica )
486 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
506 CALL cmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
510 transb = ich( icb: icb )
511 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
531 CALL cmake(
'GE',
' ',
' ', mb, nb, b, nmax, bb,
542 CALL cmake(
'GE',
' ',
' ', m, n, c, nmax,
543 $ cc, ldc, reset, zero )
573 $
WRITE( ntra, fmt = 9995 )nc, sname,
574 $ transa, transb, m, n, k, alpha, lda, ldb,
578 CALL cgemm( transa, transb, m, n, k, alpha,
579 $ aa, lda, bb, ldb, beta, cc, ldc )
584 WRITE( nout, fmt = 9994 )
591 isame( 1 ) = transa.EQ.tranas
592 isame( 2 ) = transb.EQ.tranbs
596 isame( 6 ) = als.EQ.alpha
597 isame( 7 ) =
lce( as, aa, laa )
598 isame( 8 ) = ldas.EQ.lda
599 isame( 9 ) =
lce( bs, bb, lbb )
600 isame( 10 ) = ldbs.EQ.ldb
601 isame( 11 ) = bls.EQ.beta
603 isame( 12 ) =
lce( cs, cc, lcc )
605 isame( 12 ) =
lceres(
'GE',
' ', m, n, cs,
608 isame( 13 ) = ldcs.EQ.ldc
615 same = same.AND.isame( i )
616 IF( .NOT.isame( i ) )
617 $
WRITE( nout, fmt = 9998 )i
628 CALL cmmch( transa, transb, m, n, k,
629 $ alpha, a, nmax, b, nmax, beta,
630 $ c, nmax, ct, g, cc, ldc, eps,
631 $ err, fatal, nout, .true. )
632 errmax = max( errmax, err )
655 IF( errmax.LT.thresh )
THEN
656 WRITE( nout, fmt = 9999 )sname, nc
658 WRITE( nout, fmt = 9997 )sname, nc, errmax
663 WRITE( nout, fmt = 9996 )sname
664 WRITE( nout, fmt = 9995 )nc, sname, transa, transb, m, n, k,
665 $ alpha, lda, ldb, beta, ldc
670 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
672 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
673 $
'ANGED INCORRECTLY *******' )
674 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
675 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
676 $
' - SUSPECT *******' )
677 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
678 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',''', a1,
''',',
679 $ 3( i3,
',' ),
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
680 $
',(', f4.1,
',', f4.1,
'), C,', i3,
').' )
681 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lce(RI, RJ, LR)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM