443 parameter( zero = ( 0.0, 0.0 ) )
444 DOUBLE PRECISION RZERO
445 parameter( rzero = 0.0 )
447 DOUBLE PRECISION EPS, THRESH
448 INTEGER NALF, NBET, NIDIM, NMAX, NOUT, NTRA, IORDER
449 LOGICAL FATAL, REWI, TRACE
452 COMPLEX*16 A( NMAX, NMAX ), AA( NMAX*NMAX ), ALF( NALF ),
453 $ AS( NMAX*NMAX ), B( NMAX, NMAX ),
454 $ BB( NMAX*NMAX ), BET( NBET ), BS( NMAX*NMAX ),
455 $ C( NMAX, NMAX ), CC( NMAX*NMAX ),
456 $ CS( NMAX*NMAX ), CT( NMAX )
457 DOUBLE PRECISION G( NMAX )
458 INTEGER IDIM( NIDIM )
460 COMPLEX*16 ALPHA, ALS, BETA, BLS
461 DOUBLE PRECISION ERR, ERRMAX
462 INTEGER I, IA, IB, ICA, ICB, IK, IM, IN, K, KS, LAA,
463 $ LBB, LCC, LDA, LDAS, LDB, LDBS, LDC, LDCS, M,
464 $ MA, MB, MS, N, NA, NARGS, NB, NC, NS
465 LOGICAL NULL, RESET, SAME, TRANA, TRANB
466 CHARACTER*1 TRANAS, TRANBS, TRANSA, TRANSB
481 COMMON /infoc/infot, noutc, ok, lerr
504 null = n.LE.0.OR.m.LE.0
510 transa = ich( ica: ica )
511 trana = transa.EQ.
'T'.OR.transa.EQ.
'C'
531 CALL zmake(
'ge',
' ',
' ', ma, na, a, nmax, aa, lda,
535 transb = ich( icb: icb )
536 tranb = transb.EQ.
'T'.OR.transb.EQ.
'C'
556 CALL zmake(
'ge',
' ',
' ', mb, nb, b, nmax, bb,
567 CALL zmake(
'ge',
' ',
' ', m, n, c, nmax,
568 $ cc, ldc, reset, zero )
598 $
CALL zprcn1(ntra, nc, sname, iorder,
599 $ transa, transb, m, n, k, alpha, lda,
603 CALL czgemm( iorder, transa, transb, m, n,
604 $ k, alpha, aa, lda, bb, ldb,
610 WRITE( nout, fmt = 9994 )
617 isame( 1 ) = transa.EQ.tranas
618 isame( 2 ) = transb.EQ.tranbs
622 isame( 6 ) = als.EQ.alpha
623 isame( 7 ) =
lze( as, aa, laa )
624 isame( 8 ) = ldas.EQ.lda
625 isame( 9 ) =
lze( bs, bb, lbb )
626 isame( 10 ) = ldbs.EQ.ldb
627 isame( 11 ) = bls.EQ.beta
629 isame( 12 ) =
lze( cs, cc, lcc )
631 isame( 12 ) =
lzeres(
'ge',
' ', m, n, cs,
634 isame( 13 ) = ldcs.EQ.ldc
641 same = same.AND.isame( i )
642 IF( .NOT.isame( i ) )
643 $
WRITE( nout, fmt = 9998 )i
654 CALL zmmch( transa, transb, m, n, k,
655 $ alpha, a, nmax, b, nmax, beta,
656 $ c, nmax, ct, g, cc, ldc, eps,
657 $ err, fatal, nout, .true. )
658 errmax = max( errmax, err )
681 IF( errmax.LT.thresh )
THEN
682 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10000 )sname, nc
683 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10001 )sname, nc
685 IF ( iorder.EQ.0)
WRITE( nout, fmt = 10002 )sname, nc, errmax
686 IF ( iorder.EQ.1)
WRITE( nout, fmt = 10003 )sname, nc, errmax
691 WRITE( nout, fmt = 9996 )sname
692 CALL zprcn1(nout, nc, sname, iorder, transa, transb,
693 $ m, n, k, alpha, lda, ldb, beta, ldc)
698 10003
FORMAT(
' ', a12,
' COMPLETED THE ROW-MAJOR COMPUTATIONAL ',
699 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
700 $
'RATIO ', f8.2,
' - SUSPECT *******' )
701 10002
FORMAT(
' ', a12,
' COMPLETED THE COLUMN-MAJOR COMPUTATIONAL ',
702 $
'TESTS (', i6,
' CALLS)', /
' ******* BUT WITH MAXIMUM TEST ',
703 $
'RATIO ', f8.2,
' - SUSPECT *******' )
704 10001
FORMAT(
' ', a12,
' PASSED THE ROW-MAJOR COMPUTATIONAL TESTS',
705 $
' (', i6,
' CALL',
'S)' )
706 10000
FORMAT(
' ', a12,
' PASSED THE COLUMN-MAJOR COMPUTATIONAL TESTS',
707 $
' (', i6,
' CALL',
'S)' )
708 9998
FORMAT(
' ******* FATAL ERROR - PARAMETER NUMBER ', i2,
' WAS CH',
709 $
'ANGED INCORRECTLY *******' )
710 9996
FORMAT(
' ******* ', a12,
' FAILED ON CALL NUMBER:' )
711 9995
FORMAT( 1x, i6,
': ', a12,
'(''', a1,
''',''', a1,
''',',
712 $ 3( i3,
',' ),
'(', f4.1,
',', f4.1,
'), A,', i3,
', B,', i3,
713 $
',(', f4.1,
',', f4.1,
'), C,', i3,
').' )
714 9994
FORMAT(
' ******* FATAL ERROR - ERROR-EXIT TAKEN ON VALID CALL *',