]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1996/04/01 15:03:28 mclareni | |
6 | * Mathlib gen | |
7 | * | |
8 | * | |
9 | #include "gen/pilot.h" | |
10 | #if defined(CERNLIB_VAX) | |
11 | OPTIONS/CHECK=NOOVERFLOW | |
12 | #endif | |
13 | SUBROUTINE RANUMS (X,N) | |
14 | REAL X(N) | |
15 | INTEGER IA, IC, ITWO, IY, M2, M | |
16 | DOUBLE PRECISION HALFM | |
17 | DATA M2 / 0 /, ITWO / 2 /, IY /123456789/ | |
18 | IF(M2.NE.0) GOTO 20 | |
19 | M=1 | |
20 | 10 M2=M | |
21 | M=ITWO*M2 | |
22 | IF(M.GT.M2) GOTO 10 | |
23 | HALFM=M2 | |
24 | IA=8*INT(HALFM*ATAN(1.0D0)/8.0D0)+5 | |
25 | IC=2*INT(HALFM*(0.5D0-SQRT(3.0D0)/6.0D0))+1 | |
26 | S=0.5/HALFM | |
27 | 20 DO 30 I=1,N | |
28 | IY=IY*IA+IC | |
29 | IF(IY/2.GT.M2) IY=(IY-M2)-M2 | |
30 | IF(IY.LT.0) IY=(IY+M2)+M2 | |
31 | 30 X(I)=IY*S | |
32 | RETURN | |
33 | END |