* * $Id: rn32.F,v 1.1.1.1 1996/04/01 15:02:54 mclareni Exp $ * * $Log: rn32.F,v $ * Revision 1.1.1.1 1996/04/01 15:02:54 mclareni * Mathlib gen * * #include "gen/pilot.h" #if !defined(CERNLIB_VAX)||defined(CERNLIB_FORTRAN) FUNCTION RN32(IDUMMY) #if defined(CERNLIB_CRAY) CDIR$ INTEGER=64 #endif C MACHINE-INDEPENDENT RANDOM NUMBER GENERATOR C PRODUCES UNIFORMLY-DISTRIBUTED FLOATING-PT. C NUMBERS BETWEEN ZERO AND ONE. C IDENTICAL SEQUENCE ON ALL MACHINES OF .GE. 32 BITS. C UNIVERSAL VERSION, F.JAMES, 1985 C IY IS THE SEED, C CONS IS 2**-31 C MASK31 IS 17777777777 OCTAL PARAMETER (CONS=4.6566128730774E-10, MASK31=2147483647) CSELF,IF=-IBM. CERN EDITLIB+SIEMENS COMPILER PROBLEM. SAVE IY CSELF. DATA IY/65539/ IY = IY * 69069 C KEEP ONLY LOWER 31 BITS IY = IAND (IY, MASK31) C SET LOWER 8 BITS TO ZERO TO ASSURE EXACT FLOAT JY = IY /256 *256 RN32 = CONS*JY RETURN C ENTRY TO INPUT SEED ENTRY RN32IN (IDUMMY) IY = IDUMMY RN32IN = 0. RETURN C ENTRY TO OUTPUT SEED ENTRY RN32OT (IDUMMY) IDUMMY = IY RN32OT = 0. RETURN END #endif