1C--- 8 June 1999 Chris S. modified to read a file with the first argument 2C--- being a generator type 3C--- added 'integer gentype' 4C--- added 'Reading in a generator type' and 'read *, gentype' 5#define PARAM 0 6#define TIMING_TRIAL_SIZE 1000000 7 8#ifdef POINTER_SIZE 9#if POINTER_SIZE == 8 10#define SPRNG_POINTER integer*8 11#else 12#define SPRNG_POINTER integer*4 13#endif 14#else 15#define SPRNG_POINTER integer*4 16#endif 17 18 program test_generator 19 20 implicit none 21 integer gentype 22 external finit_rng, fget_rn_int, fget_rn_flt, fget_rn_dbl 23 external fcpu_t 24 25 SPRNG_POINTER finit_rng 26 real*8 fget_rn_dbl, fcpu_t, tempd 27 real*4 fget_rn_flt, tempf 28 integer fget_rn_int, tempi 29 30 integer i 31 SPRNG_POINTER gen 32 real*8 temp1, temp2, temp3, temp4 33 real*8 temp_mult 34C--- Reading in a generator type 35C--- read *, gentype 36 37 temp_mult = TIMING_TRIAL_SIZE/1.0e6 38 gen = finit_rng(2,0,1,0,PARAM) 39 40 temp1 = fcpu_t() 41 42 do 100 i = 1,TIMING_TRIAL_SIZE 43 tempi = fget_rn_int(gen) 44 100 continue 45 46 temp2 = fcpu_t() 47 48 do 200 i = 1,TIMING_TRIAL_SIZE 49 tempf = fget_rn_flt(gen) 50 200 continue 51 52 temp3 = fcpu_t() 53 54 55 do 300 i = 1,TIMING_TRIAL_SIZE 56 tempd = fget_rn_dbl(gen) 57 300 continue 58 59 temp4 = fcpu_t() 60 61 if( temp2-temp1 .lt. 1.0e-15 ) then 62 print *, 'Timing information not available or nor accurate' 63 stop 64 end if 65 66 if( temp3-temp2 .lt. 1.0e-15 ) then 67 print *, 'Timing information not available or nor accurate' 68 stop 69 end if 70 71 if(temp4-temp3 .lt. 1.0e-15 ) then 72 print *, 'Timing information not available or not accurate' 73 stop 74 end if 75 76 temp1 = temp_mult/(temp2-temp1) 77 temp2 = temp_mult/(temp3-temp2) 78 temp3 = temp_mult/(temp4-temp3) 79 80 print *, 'User + System time Information' 81 print *, '(Note: MRS = Million Random Numbers Per Second)' 82 write(6,500) temp1 83 write(6,501) temp2 84 write(6,502) temp3 85 86 500 format(' Integer generator: ', f7.3, ' MRS') 87 501 format(' real*4 generator: ', f7.3, ' MRS') 88 502 format(' real*8 generator: ', f7.3, ' MRS') 89 90 end 91 92