Rev | Line | |
---|
[12] | 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.