]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/04/01 15:02:54 mclareni | |
6 | * Mathlib gen | |
7 | * | |
8 | * | |
9 | #include "gen/pilot.h" | |
10 | #if !defined(CERNLIB_VAX)||defined(CERNLIB_FORTRAN) | |
11 | FUNCTION RN32(IDUMMY) | |
12 | #if defined(CERNLIB_CRAY) | |
13 | CDIR$ INTEGER=64 | |
14 | #endif | |
15 | C MACHINE-INDEPENDENT RANDOM NUMBER GENERATOR | |
16 | C PRODUCES UNIFORMLY-DISTRIBUTED FLOATING-PT. | |
17 | C NUMBERS BETWEEN ZERO AND ONE. | |
18 | C IDENTICAL SEQUENCE ON ALL MACHINES OF .GE. 32 BITS. | |
19 | C UNIVERSAL VERSION, F.JAMES, 1985 | |
20 | C IY IS THE SEED, | |
21 | C CONS IS 2**-31 | |
22 | C MASK31 IS 17777777777 OCTAL | |
23 | PARAMETER (CONS=4.6566128730774E-10, MASK31=2147483647) | |
24 | CSELF,IF=-IBM. CERN EDITLIB+SIEMENS COMPILER PROBLEM. | |
25 | SAVE IY | |
26 | CSELF. | |
27 | DATA IY/65539/ | |
28 | IY = IY * 69069 | |
29 | C KEEP ONLY LOWER 31 BITS | |
30 | IY = IAND (IY, MASK31) | |
31 | C SET LOWER 8 BITS TO ZERO TO ASSURE EXACT FLOAT | |
32 | JY = IY /256 *256 | |
33 | RN32 = CONS*JY | |
34 | RETURN | |
35 | C ENTRY TO INPUT SEED | |
36 | ENTRY RN32IN (IDUMMY) | |
37 | IY = IDUMMY | |
38 | RN32IN = 0. | |
39 | RETURN | |
40 | C ENTRY TO OUTPUT SEED | |
41 | ENTRY RN32OT (IDUMMY) | |
42 | IDUMMY = IY | |
43 | RN32OT = 0. | |
44 | RETURN | |
45 | END | |
46 | #endif |