5 SUBROUTINE ladd( J, K, I )
13 INTEGER I(2), J(2), K(2)
19 INTEGER IPOW16, IPOW15
20 parameter( ipow16=2**16, ipow15=2**15 )
27 i(1) = mod( k(1)+j(1), ipow16 )
28 i(2) = mod( (k(1)+j(1)) / ipow16+k(2)+j(2), ipow15 )
40 SUBROUTINE lmul( K, J, I )
48 INTEGER I(2), J(2), K(2)
54 INTEGER IPOW15, IPOW16, IPOW30
55 parameter( ipow15=2**15, ipow16=2**16, ipow30=2**30 )
66 IF( kt.LT.0 ) kt = (kt+ipow30) + ipow30
68 lt = k(1)*j(2) + k(2)*j(1)
69 IF( lt.LT.0 ) lt = (lt+ipow30) + ipow30
71 IF( kt.LT.0 ) kt = (kt+ipow30) + ipow30
72 i(2) = mod( kt, ipow15 )
84 SUBROUTINE xjumpm( JUMPM, MULT, IADD, IRANN, IRANM, IAM, ICM )
95 INTEGER IADD(2), IAM(2), ICM(2), IRANM(2), IRANN(2)
112 IF( jumpm.GT.0 )
THEN
118 CALL lmul( iam, mult, j )
121 CALL lmul( icm, mult, j )
122 CALL ladd( iadd, j, icm )
124 CALL lmul( irann, iam, j )
125 CALL ladd( j, icm, iranm )
141 SUBROUTINE setran( IRAN, IA, IC )
149 INTEGER IA(2), IC(2), IRAN(2)
158 INTEGER IAS(2), ICS(2), IRAND(2)
161 COMMON /rancom/ irand, ias, ics
182 SUBROUTINE jumpit( MULT, IADD, IRANN, IRANM )
190 INTEGER IADD(2), IRANM(2), IRANN(2), MULT(2)
196 INTEGER IAS(2), ICS(2), IRAND(2), J(2)
202 COMMON /rancom/ irand, ias, ics
207 CALL lmul( irann, mult, j )
208 CALL ladd( j, iadd, iranm )
223 REAL FUNCTION PSRAND( IDUMM )
238 parameter( divfac=2.147483648e+9, pow16=6.5536e+4 )
250 INTEGER ias(2), ics(2), irand(2)
251 COMMON /rancom/ irand, ias, ics
256 psrand = ( real(irand(1)) + pow16 * real(irand(2)) ) / divfac
258 CALL lmul( irand, ias, j )
259 CALL ladd( j, ics, irand )
271 DOUBLE PRECISION FUNCTION pdrand( IDUMM )
285 DOUBLE PRECISION divfac, pow16
286 parameter( divfac=2.147483648d+9, pow16=6.5536d+4 )
298 INTEGER ias(2), ics(2), irand(2)
299 COMMON /rancom/ irand, ias, ics
304 pdrand = ( dble(irand(1)) + pow16 * dble(irand(2)) ) / divfac
306 CALL lmul( irand, ias, j )
307 CALL ladd( j, ics, irand )