421 parameter ( zero = ( 0.0, 0.0 ) )
423 parameter ( rzero = 0.0 )
426 INTEGER nalf, nbet, nidim, nmax, nout, ntra
427 LOGICAL fatal, rewi, trace
430 COMPLEX a( nmax, nmax ), aa( nmax*nmax ), alf( nalf ),
431 $ as( nmax*nmax ), b( nmax, nmax ),
432 $ bb( nmax*nmax ), bet( nbet ), bs( nmax*nmax ),
433 $ c( nmax, nmax ), cc( nmax*nmax ),
434 $ cs( nmax*nmax ), ct( nmax )
436 INTEGER idim( nidim )
438 COMPLEX alpha, als, beta, bls
440 INTEGER i, ia, ib, ica, icb, ik, im, in, k, ks, laa,
441 $ lbb, lcc, lda, ldas, ldb, ldbs, ldc, ldcs, m,
442 $ ma, mb, ms, n, na, nargs, nb, nc, ns
443 LOGICAL null, reset, same, trana, tranb
444 CHARACTER*1 tranas, tranbs, transa, transb
459 COMMON /infoc/infot, noutc, ok, lerr
482 null = n.LE.0.OR.m.LE.0
488 transa = ich( ica: ica )
489 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
509 CALL cmake(
'GE',
' ',
' ', ma, na, a, nmax, aa, lda,
513 transb = ich( icb: icb )
514 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
534 CALL cmake(
'GE',
' ',
' ', mb, nb, b, nmax, bb,
545 CALL cmake(
'GE',
' ',
' ', m, n, c, nmax,
546 $ cc, ldc, reset, zero )
576 $
WRITE( ntra, fmt = 9995 )nc, sname,
577 $ transa, transb, m, n, k, alpha, lda, ldb,
581 CALL cgemm( transa, transb, m, n, k, alpha,
582 $ aa, lda, bb, ldb, beta, cc, ldc )
587 WRITE( nout, fmt = 9994 )
594 isame( 1 ) = transa.EQ.tranas
595 isame( 2 ) = transb.EQ.tranbs
599 isame( 6 ) = als.EQ.alpha
600 isame( 7 ) =
lce( as, aa, laa )
601 isame( 8 ) = ldas.EQ.lda
602 isame( 9 ) =
lce( bs, bb, lbb )
603 isame( 10 ) = ldbs.EQ.ldb
604 isame( 11 ) = bls.EQ.beta
606 isame( 12 ) =
lce( cs, cc, lcc )
608 isame( 12 ) =
lceres(
'GE',
' ', m, n, cs,
611 isame( 13 ) = ldcs.EQ.ldc
618 same = same.AND.isame( i )
619 IF( .NOT.isame( i ) )
620 $
WRITE( nout, fmt = 9998 )i
631 CALL cmmch( transa, transb, m, n, k,
632 $ alpha, a, nmax, b, nmax, beta,
633 $ c, nmax, ct, g, cc, ldc, eps,
634 $ err, fatal, nout, .true. )
635 errmax = max( errmax, err )
658 IF( errmax.LT.thresh )
THEN
659 WRITE( nout, fmt = 9999 )sname, nc
661 WRITE( nout, fmt = 9997 )sname, nc, errmax
666 WRITE( nout, fmt = 9996 )sname
667 WRITE( nout, fmt = 9995 )nc, sname, transa, transb, m, n, k,
668 $ alpha, lda, ldb, beta, ldc
673 9999
FORMAT(
' ', a6,
' PASSED THE COMPUTATIONAL TESTS (', i6,
' CALL',
675 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
676 $
'ANGED INCORRECTLY *******' )
677 9997
FORMAT(
' ', a6,
' COMPLETED THE COMPUTATIONAL TESTS (', i6,
' C',
678 $
'ALLS)', /
' ******* BUT WITH MAXIMUM TEST RATIO', f8.2,
679 $
' - SUSPECT *******' )
680 9996
FORMAT(
' ******* ', a6,
' FAILED ON CALL NUMBER:' )
681 9995
FORMAT( 1x, i6,
': ', a6,
'(''', a1,
''',''', a1,
''',',
682 $ 3( i3,
',' ),
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
683 $
',(', f4.1,
',', f4.1,
'), C,', i3,
').' )
684 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',
subroutine cmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
logical function lce(RI, RJ, LR)
subroutine cmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lceres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine cgemm(TRANSA, TRANSB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDC)
CGEMM