Line | |
---|
1 | REAL FUNCTION RANF() |
---|
2 | DOUBLE PRECISION DRANF, G900GT, G900ST |
---|
3 | DOUBLE PRECISION DS(2), DM(2), DSEED |
---|
4 | DOUBLE PRECISION DX24, DX48 |
---|
5 | DOUBLE PRECISION DL, DC, DU, DR |
---|
6 | LOGICAL SINGLE |
---|
7 | DATA DS / 1665 1885.D0, 286 8876.D0 / |
---|
8 | DATA DM / 1518 4245.D0, 265 1554.D0 / |
---|
9 | DATA DX24 / 1677 7216.D0 / |
---|
10 | DATA DX48 / 281 4749 7671 0656.D0 / |
---|
11 | SINGLE = .TRUE. |
---|
12 | GOTO 10 |
---|
13 | ENTRY DRANF() |
---|
14 | SINGLE = .FALSE. |
---|
15 | 10 DL = DS(1) * DM(1) |
---|
16 | DC = DINT(DL/DX24) |
---|
17 | DL = DL - DC*DX24 |
---|
18 | DU = DS(1)*DM(2) + DS(2)*DM(1) + DC |
---|
19 | DS(2) = DU - DINT(DU/DX24)*DX24 |
---|
20 | DS(1) = DL |
---|
21 | DR = (DS(2)*DX24 + DS(1)) / DX48 |
---|
22 | IF(SINGLE) THEN |
---|
23 | RANF = SNGL(DR) |
---|
24 | ELSE |
---|
25 | DRANF = DR |
---|
26 | ENDIF |
---|
27 | RETURN |
---|
28 | ENTRY G900GT() |
---|
29 | G900GT = DS(2)*DX24 + DS(1) |
---|
30 | RETURN |
---|
31 | ENTRY G900ST(DSEED) |
---|
32 | DS(2) = DINT(DSEED/DX24) |
---|
33 | DS(1) = DSEED - DS(2)*DX24 |
---|
34 | G900ST = DS(1) |
---|
35 | RETURN |
---|
36 | END |
---|
Note: See
TracBrowser
for help on using the repository browser.