CALL SYSTEM
feature - most Unix
implementations 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
SYSTEM
removed 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!