]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MINICERN/packlib/kernlib/kerngen/tcgen/rmmaq.F
Bugfix in AliPoints2Memory
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / tcgen / rmmaq.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1996/02/15 17:49:53 mclareni
6* Kernlib
7*
8*
9#include "kerngen/pilot.h"
10 SUBROUTINE RMMAQ(ISEED,ISEQ,CHOPT)
11C
12C CERN PROGLIB# V113 RMMAQ .VERSION KERNFOR 1.0
13C ORIG. 01/03/89 FCA + FJ
14C
15 COMMON/RANMA2/JSEQ,IU(103)
16 DIMENSION I97(0:1),J97(0:1),C(0:1),NTOT(0:1)
17 DIMENSION NTOT2(0:1),IJKL(0:1),U(97)
18 EQUIVALENCE (IJKL(0),IU(1)),(NTOT(0),IU(2)),(NTOT2(0),IU(3))
19 EQUIVALENCE (U(1),IU(4)),(C(0),IU(101)),(I97(0),IU(102))
20 EQUIVALENCE (J97(0),IU(103))
21 DIMENSION ISEED(*),UU(97)
22 CHARACTER CHOPT*(*), CCHOPT*12
23 PARAMETER (TWOM24=2.**(-24),TWOM48=2.**(-48))
24 PARAMETER (CD=7654321.*TWOM24,CM=16777213.*TWOM24)
25 PARAMETER (CINT=362436.*TWOM24,MODCNS=1000000000)
26 SAVE /RANMA2/
27C
28 CCHOPT = CHOPT
29 IF(CCHOPT.EQ.' ') THEN
30 ISEED(1) = 54217137
31 ISEED(2) = 0
32 ISEED(3) = 0
33 CCHOPT = 'S'
34 JSEQ = 1
35 ENDIF
36C
37 IF(INDEX(CCHOPT,'S').NE.0) THEN
38 IF(ISEQ.GT.0) JSEQ=ISEQ
39 IBASE = (JSEQ-1)*103
40 IF(INDEX(CCHOPT,'V').NE.0) THEN
41 DO 10 JJ=1, 103
42 IU(IBASE+JJ) = ISEED(JJ)
43 10 CONTINUE
44 ELSE
45 IJKL(IBASE) = ISEED(1)
46 NTOT(IBASE) = ISEED(2)
47 NTOT2(IBASE) = ISEED(3)
48 IJ = IJKL(IBASE)/30082
49 KL = IJKL(IBASE) - 30082*IJ
50 I = MOD(IJ/177, 177) + 2
51 J = MOD(IJ, 177) + 2
52 K = MOD(KL/169, 178) + 1
53 L = MOD(KL, 169)
54 DO 30 II= 1, 97
55 S = 0.
56 T = .5
57 DO 20 JJ= 1, 24
58 M = MOD(MOD(I*J,179)*K, 179)
59 I = J
60 J = K
61 K = M
62 L = MOD(53*L+1, 169)
63 IF (MOD(L*M,64) .GE. 32) S = S+T
64 T = 0.5*T
65 20 CONTINUE
66 UU(II) = S
67 30 CONTINUE
68 CC = CINT
69 II97 = 97
70 IJ97 = 33
71C Complete initialization by skipping
72C (NTOT2*MODCNS + NTOT) random numbers
73 NITER = MODCNS
74 DO 50 LOOP2= 1, NTOT2(IBASE)+1
75 IF(LOOP2.GT.NTOT2(IBASE)) NITER=NTOT(IBASE)
76 DO 40 IDUM = 1, NITER
77 UNI = UU(II97)-UU(IJ97)
78 IF (UNI .LT. 0.) UNI=UNI+1.
79 UU(II97) = UNI
80 II97 = II97-1
81 IF (II97 .EQ. 0) II97=97
82 IJ97 = IJ97-1
83 IF (IJ97 .EQ. 0) IJ97=97
84 CC = CC - CD
85 IF (CC .LT. 0.) CC=CC+CM
86 40 CONTINUE
87 50 CONTINUE
88 I97(IBASE) = II97
89 J97(IBASE) = IJ97
90 C(IBASE) = CC
91 DO 60 JJ=1, 97
92 U(IBASE+JJ) = UU(JJ)
93 60 CONTINUE
94 ENDIF
95 ELSE IF(INDEX(CCHOPT,'R').NE.0) THEN
96 IF(ISEQ.GT.0) THEN
97 JSEQ=ISEQ
98 ELSE
99 ISEQ=JSEQ
100 ENDIF
101 IBASE = (JSEQ-1)*103
102 IF(INDEX(CCHOPT,'V').NE.0) THEN
103 NCOPY = 103
104 ELSE
105 NCOPY = 3
106 ENDIF
107 DO 70 JJ=1,NCOPY
108 ISEED(JJ) = IU(IBASE+JJ)
109 70 CONTINUE
110 ENDIF
111C
112 END