Files
thin-provisioning-tools/functional-tests/srfi/s27

REFERENCE IMPLEMENTATIONS FOR SRFI-27 "Sources of Random Bits"

==============================================================



Sebastian.Egner@philips.com, 10-Apr-2002.



Files

-----



  readme         - this file

  mrg32k3a.scm   - generic parts of P. L' Ecuyer's MRG32k3a PRGN

  mrg32k3a-a.scm - core generator in Scheme integers

  mrg32k3a-b.c   - core generator in C doubles for Scheme 48

  mrg32k3a-c.scm - core generator in Gambit [Scheme] flonums

  srfi-27-a.scm  - Scheme 48 package definition for Scheme-only impl.

  srfi-27-b.scm  - Scheme 48 package definition for C/Scheme impl.

  srfi-27-c.scm  - Gambit definition for Scheme-only impl.

  conftest.scm   - confidence tests for the implementation



Implementations

---------------



The implementation has been factored into three parts.

One part implements the core generator, one part provides

the more generic functionality as specified in the SRFI,

and one part combines the parts and provides the interface

as specified in the SRFI.



a) A Scheme-only implementation for Scheme 48 0.57:

     srfi-27-a.scm

     mrg32k3a-a.scm

     mrg32k3a.scm



   This implementation uses 54-bit Scheme integers for all

   arithmetics of the generator. The result are Scheme integers

   and inexact Scheme numbers when floating point values are

   requested. 



   The implementation is slow but tries to stay away from

   unportable features as much as possible.



b) An implementation in Scheme 48 0.57 and ANSI-C:

     srfi-27-b.scm

     mrg32k3a-b.scm

     mrg32k3a.scm



   This is a more realistic implementation using C's (double)

   datatype for the core generator and 54-bit Scheme integers

   for the more infrequent operations on the state like the

   random-source-pseudo-randomize! operation.



   This implementation is meant as an example for a realistic

   native code implementation of the SRFI. Performance is good.



c) A Scheme-only implementation for Gambit 3.0:

     srfi-27-c.scm

     mrg32k3a-c.scm

     mrg32k3a.scm



   This implementation uses Gambit's 64-bit flonums. It is

   entirely written in Scheme but uses a few special features

   of the Gambit system to tell the compiler.



   This implementation is meant as an example for a realistic

   Scheme implementation using flonums in Scheme and no C-code.

   Performance is good when the code is used in compiled form;

   the implementation has been optimized by Brad Lucier. This

   has resulted in a subtantial performance gain.