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 *',
logical function lzeres(TYPE, UPLO, M, N, AA, AS, LDA)
subroutine zmmch(TRANSA, TRANSB, M, N, KK, ALPHA, A, LDA, B, LDB, BETA, C, LDC, CT, G, CC, LDCC, EPS, ERR, FATAL, NOUT, MV)
subroutine zmake(TYPE, UPLO, DIAG, M, N, A, NMAX, AA, LDA, KL, KU, RESET, TRANSL)
logical function lze(RI, RJ, LR)
subroutine zprcn1(NOUT, NC, SNAME, IORDER, TRANSA, TRANSB, M, N, K, ALPHA, LDA, LDB, BETA, LDC)