]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PHOS/shaker/rlu.f
Syntax problems on HP-UX corrected
[u/mrichter/AliRoot.git] / PHOS / shaker / rlu.f
CommitLineData
fe4da5cc 1*CMZ : 17/07/98 15.44.33 by Federico Carminati
2*-- Author :
3C*********************************************************************
4
5 FUNCTION RLU(IDUM)
6
7C...Purpose: to generate random numbers uniformly distributed between
8C...0 and 1, excluding the endpoints.
9*KEEP,LUDATR.
10 COMMON /LUDATR/ MRLU(6),RRLU(100)
11 SAVE /LUDATR/
12*KEND.
13 EQUIVALENCE (MRLU1,MRLU(1)),(MRLU2,MRLU(2)),(MRLU3,MRLU(3)),
14 &(MRLU4,MRLU(4)),(MRLU5,MRLU(5)),(MRLU6,MRLU(6)),
15 &(RRLU98,RRLU(98)),(RRLU99,RRLU(99)),(RRLU00,RRLU(100))
16
17C...Initialize generation from given seed.
18 IF(MRLU2.EQ.0) THEN
19 IJ=MOD(MRLU1/30082,31329)
20 KL=MOD(MRLU1,30082)
21 I=MOD(IJ/177,177)+2
22 J=MOD(IJ,177)+2
23 K=MOD(KL/169,178)+1
24 L=MOD(KL,169)
25 DO 110 II=1,97
26 S=0.
27 T=0.5
28 DO 100 JJ=1,24
29 M=MOD(MOD(I*J,179)*K,179)
30 I=J
31 J=K
32 K=M
33 L=MOD(53*L+1,169)
34 IF(MOD(L*M,64).GE.32) S=S+T
35 100 T=0.5*T
36 110 RRLU(II)=S
37 TWOM24=1.
38 DO 120 I24=1,24
39 120 TWOM24=0.5*TWOM24
40 RRLU98=362436.*TWOM24
41 RRLU99=7654321.*TWOM24
42 RRLU00=16777213.*TWOM24
43 MRLU2=1
44 MRLU3=0
45 MRLU4=97
46 MRLU5=33
47 ENDIF
48
49C...Generate next random number.
50 130 RUNI=RRLU(MRLU4)-RRLU(MRLU5)
51 IF(RUNI.LT.0.) RUNI=RUNI+1.
52 RRLU(MRLU4)=RUNI
53 MRLU4=MRLU4-1
54 IF(MRLU4.EQ.0) MRLU4=97
55 MRLU5=MRLU5-1
56 IF(MRLU5.EQ.0) MRLU5=97
57 RRLU98=RRLU98-RRLU99
58 IF(RRLU98.LT.0.) RRLU98=RRLU98+RRLU00
59 RUNI=RUNI-RRLU98
60 IF(RUNI.LT.0.) RUNI=RUNI+1.
61 IF(RUNI.LE.0.OR.RUNI.GE.1.) GOTO 130
62
63C...Update counters. Random number to output.
64 MRLU3=MRLU3+1
65 IF(MRLU3.EQ.1000000000) THEN
66 MRLU2=MRLU2+1
67 MRLU3=0
68 ENDIF
69 RLU=RUNI
70
71 RETURN
72 END