68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 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.
 |