CALL SYSTEMfeature - most
Uniximplementations are OK with this. The bits to change are clearly labelled in the code if your implementation desn't support it. The routines have been used without problems on Silicon Graphics Machines running Irix 5.3 and Irix 6.3, Sun workstations running SunOS 5.5.1 and some version of Solaris (now defunct so I can't remember which), a PC running Linux 2.0.35 and a PC running the Salford Fortran compiler under MS-DOS (with
CALL SYSTEMremoved for the last case).
Code last updated on 26th August 2003: routine ZBQLU01 amended to prevent it from returning zero values (which are perfectly legitimate as far as the discrete arithmetic of the generator is concerned, but cause problems if, for example, you try to calculate log(U) in order to generate an exponential random variate). If the discrete arithmetic returns zero, the code will now return a random number uniformly distributed between zero and the smallest possible discrete value (which is around 4*10^-9). The integer arithmetic has also been replaced with double precision throughout, to avoid problems with integer overflow errors. The accuracy has been checked and is OK (see comments in code). Thanks again to Peter Visscher for testing the previous version to destruction!