5 * Revision 1.1.1.1 1996/04/01 15:02:43 mclareni
10 #if !defined(CERNLIB_DOUBLE)
13 #if defined(CERNLIB_DOUBLE)
15 #include "gen/imp64.inc"
17 C Computes a "Normal Deviate"
18 C Based on G.W. Hill & A.W. Davis, Algorithm 442 Normal Deviate
19 C Collected Algorithms from CACM
23 #if !defined(CERNLIB_DOUBLE)
24 PARAMETER (NAME = 'GAUSIN')
26 #if defined(CERNLIB_DOUBLE)
27 PARAMETER (NAME = 'DGAUSN')
30 PARAMETER (C = 2.50662 82746 31000 50D0)
31 PARAMETER (Z1 = 1, HF = Z1/2, C1 = 3*Z1/4, C2 = 7*Z1/8, C3 = Z1/3)
33 IF(P .LE. 0 .OR. P .GE. 1) THEN
36 CALL MTLPRT(NAME,'G105.1',ERRTXT)
37 ELSEIF(P .EQ. HF) THEN
43 X=X-((7.47395*X+494.877)*X+1637.720)/
44 1 (((X+117.9407)*X+908.401)*X+659.935)
47 #if !defined(CERNLIB_DOUBLE)
48 Z=C*(P-FREQ(X))*EXP(HF*S)
50 #if defined(CERNLIB_DOUBLE)
51 Z=C*(P-DFREQ(X))*EXP(HF*S)
53 H=(((((C1*S+C2)*Z+X)*X+HF)*C3*Z+HF*X)*Z+1)*Z+X
55 #if !defined(CERNLIB_DOUBLE)
58 #if defined(CERNLIB_DOUBLE)
62 101 FORMAT('ARGUMENT P =',1P,D15.8,' NOT IN RANGE')