SUBROUTINE R11 ( C, MODULUS, N, NUMSIZE, ERR, * CSET, WSET, CRUN, WRUN, CCHECK, WCHECK ) c ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c c This is the output routine for Benchmark 11. c c This will need to be modified to contain the particular c configuration information requested. c c Parameters: c Provided by calling routine: c C = Product matrix c MODULUS = Modulus for the arithmetic c N = Size of matrices c NUMSIZE = Number of words used to hold an MP integer c ERR = Error flag c CSET = CPU time required to generate the data c WSET = Wallclock time required to generate the data c CRUN = CPU time required to do the benchmark c WRUN = Wallclock time required to do the benchmark c CCHECK = CPU time required to check the results c WCHECK = Wallclock time required to check the results c cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc c IMPLICIT NONE #include "bench11.h" c c Variables holding the times. c DOUBLE PRECISION CSET, WSET, CRUN, WRUN, CCHECK, WCHECK c c Other variables c INTEGER I, J, K, N, NUMSIZE, ERR c c Arrays to hold the product matrix and modulus c MPLONG C ( NUMSIZE, N, N ) MPLONG MODULUS ( NUMSIZE ) c MPLONG TEMPC ( MAXNUMSIZE ) c C--CVS variable declaration TYPE CVS sequence character( 160 ) string integer stringend END TYPE CVS C--CVS initilaize variables TYPE( CVS ),save :: CVS_INFO = $ CVS("BMARKGRP $Date: 2005/01/10 20:46:00 $ $Revision: 1.2 $" // $ "$RCSfile: r11.F,v $ $Name: rel_5 $", 0) #ifndef CRAY CHARACTER*24 FDATE EXTERNAL FDATE #endif c c print out header and times c PRINT '("Benchmark #11 -- Multiprecision Arithmetic",/)' c #ifdef CRAY PRINT 7, DATE() 7 FORMAT("Date: ", A15, /) #else /* Requires /usr/lib/libU77.a. Works on CONVEX and DEC Alpha. */ PRINT 7, FDATE() 7 FORMAT("Date: ", A24, /) #endif c PRINT 15,N 15 FORMAT( "Size of matrices = ", I11) c PRINT '("Modulus:")' CALL MPWRITE(MODULUS) PRINT* c PRINT 25, CSET, WSET 25 FORMAT("Time for set up: ", /, * "time: Setup CPU = ", F12.4, " seconds", /, * "time: Setup Wall = ", F12.4, " seconds", /) c PRINT 31, CRUN, WRUN 31 FORMAT("Time to run: ", /, * "time: Run CPU = ", F12.4, " seconds", /, * "time: Run Wall = ", F12.4, " seconds", /) c PRINT 35, CCHECK, WCHECK 35 FORMAT("Time to check results: ", /, * "time: Check CPU = ", F12.4, " seconds", /, * "time: Check Wall = ", F12.4, " seconds", /) c c No errors c IF (ERR .EQ. 0) THEN PRINT '("NO ERRORS FOUND")' ENDIF c c Results for given input parameters are unknown c IF (ERR .LT. 0) THEN PRINT '("The results for given input parameters are unknown.", * /, "No checking is possible.")' ENDIF c IF(ERR .EQ. 1) THEN PRINT '("ERROR: Results do not agree with previous results.")' ENDIF c c Finished first half of output c c------------------------------------------------------------ c A compiler flag in makefile determines whether to print c the selected entries in the product matrix C c------------------------------------------------------------ c c#ifdef PrintAll c c Print out selected results c DO 50, I = 1, N, N/3 DO 60, J = 1, N, N/4 PRINT 40, I, J 40 FORMAT( /, "C(", I4, ",", I4, " ) = :" ) CALL MPWRITE(C(1,I,J)) 60 CONTINUE 50 CONTINUE c c C(N,N) c PRINT 40, N,N CALL MPWRITE(C(1,N,N)) PRINT * c c#endif c RETURN END