5 * Revision 1.1.1.1 1996/02/15 17:49:53 mclareni
9 #include "kerngen/pilot.h"
10 SUBROUTINE RANMAR(RVEC,LENV)
11 #if defined(CERNLIB_QMCRY)
15 C CERN PROGLIB# V113 RANMAR .VERSION KERNFOR 4.21 890323
16 C ORIG. 01/03/89 FCA + FJ
20 COMMON/RANMA1/IJKL,NTOT,NTOT2,I97,J97,C,U(97)
22 PARAMETER (TWOM24=2.**(-24),TWOM48=2.**(-48))
23 PARAMETER (CD=7654321.*TWOM24,CM=16777213.*TWOM24)
24 PARAMETER (CINT=362436.*TWOM24,MODCNS=1000000000)
38 IF (UNI .LT. 0.) UNI=UNI+1.
41 IF (I97 .EQ. 0) I97=97
43 IF (J97 .EQ. 0) J97=97
47 IF (UNI .LT. 0.) UNI=UNI+1.
49 C Replace exact zeroes by uniform distr. *2**-24
54 C An exact zero here is very unlikely, but let's be safe.
56 IF (UNI .EQ. 0.) UNI= TWOM48
62 IF (NTOT .GE. MODCNS) THEN
67 ENTRY RMARIN(IJKLIN,NTOTIN,NTO2IN)
77 I = MOD(IJ/177, 177) + 2
79 K = MOD(KL/169, 178) + 1
85 M = MOD(MOD(I*J,179)*K, 179)
90 IF (MOD(L*M,64) .GE. 32) S = S+T
98 C Complete initialization by skipping
99 C (NTOT2*MODCNS + NTOT) random numbers
101 DO 50 LOOP2= 1, NTOT2+1
102 IF(LOOP2.GT.NTOT2) NITER=NTOT
103 DO 40 IDUM = 1, NITER
105 IF (UNI .LT. 0.) UNI=UNI+1.
108 IF (I97 .EQ. 0) I97=97
110 IF (J97 .EQ. 0) J97=97
112 IF (C .LT. 0.) C=C+CM
122 ENTRY RMARUT(IJKLUT,NTOTUT,NTO2UT)