source: PSPA/parmelaPSPA/trunk/ranf.f @ 315

Last change on this file since 315 was 12, checked in by lemeur, 12 years ago

parmela pspa initial

File size: 1.2 KB
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.