]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MINICERN/packlib/kernlib/kerngen/tcgens/vaxgs/rndm.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / MINICERN / packlib / kernlib / kerngen / tcgens / vaxgs / rndm.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1996/02/15 17:50:23  mclareni
6 * Kernlib
7 *
8 *
9       FUNCTION RNDM (ISEED)
10 C
11 C CERN PROGLIB# V104    RNDM            .VERSION KERNVAX  2.39  930112
12 C ORIG. 22-MAR-88 from IBM version of G.Marsaglia et al., Montreal
13 C
14 C     !!!   Version valid only for VAX floating point format  !!!
15 C     Careful: compile with /CHECK=NOOVERFLOW
16 C
17 C-    Uniform Random Number Generator,
18 C-    giving the same sequence as the IBM and VAX m-language version
19
20       EQUIVALENCE (AMAN,MANT)
21       PARAMETER    (MSK1 = 3072)
22 C     PARAMETER    (MSK1 = '00000C00'X)
23       PARAMETER    (MSK2 = 13312)
24 C     PARAMETER    (MSK2 = '00003400'X)
25       SAVE  MCGN
26       DATA  MCGN  /12345/
27
28
29       MCGN = MCGN * 69069
30       MANT = ISHFT (MCGN,-8)
31       IF (MANT.EQ.0)         GO TO 14
32       AMAN = MANT
33 C-    AMAN in the range 1 to 2**24-1
34       MANT = MANT - MSK1
35 C-    multiply by 2.**(-24)
36       RNDM = AMAN
37       RETURN
38
39 C--   for zero set RNDM = 2.**(-25)
40    14 MANT = MSK2
41       RNDM = AMAN
42       RETURN
43
44 C--       Integer random number
45       ENTRY IRNDM (ISEED)
46       MCGN  = MCGN * 69069
47       IRNDM = ISHFT (MCGN,-1)
48       RETURN
49
50 C--       Set the seed
51       ENTRY RDMIN (ISEED)
52       MCGN = ISEED
53       RETURN
54
55 C--       Get the seed
56       ENTRY RDMOUT (ISEED)
57       ISEED = MCGN
58       END