Artifact
2dc090ee925b1eb4af1f4b365a72c534f317d40b:
- File
srfi/s27/readme
— part of check-in
[80c8c83034]
at
2016-07-07 18:11:39
on branch trunk
— initial import
(user:
ovenpasta@pizzahack.eu
size: 2519)
0000: 52 45 46 45 52 45 4e 43 45 20 49 4d 50 4c 45 4d REFERENCE IMPLEM
0010: 45 4e 54 41 54 49 4f 4e 53 20 46 4f 52 20 53 52 ENTATIONS FOR SR
0020: 46 49 2d 32 37 20 22 53 6f 75 72 63 65 73 20 6f FI-27 "Sources o
0030: 66 20 52 61 6e 64 6f 6d 20 42 69 74 73 22 0d 0a f Random Bits"..
0040: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0050: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0060: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================
0070: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0d 0a ==============..
0080: 0d 0a 53 65 62 61 73 74 69 61 6e 2e 45 67 6e 65 ..Sebastian.Egne
0090: 72 40 70 68 69 6c 69 70 73 2e 63 6f 6d 2c 20 31 r@philips.com, 1
00a0: 30 2d 41 70 72 2d 32 30 30 32 2e 0d 0a 0d 0a 46 0-Apr-2002.....F
00b0: 69 6c 65 73 0d 0a 2d 2d 2d 2d 2d 0d 0a 0d 0a 20 iles..-----....
00c0: 20 72 65 61 64 6d 65 20 20 20 20 20 20 20 20 20 readme
00d0: 2d 20 74 68 69 73 20 66 69 6c 65 0d 0a 20 20 6d - this file.. m
00e0: 72 67 33 32 6b 33 61 2e 73 63 6d 20 20 20 2d 20 rg32k3a.scm -
00f0: 67 65 6e 65 72 69 63 20 70 61 72 74 73 20 6f 66 generic parts of
0100: 20 50 2e 20 4c 27 20 45 63 75 79 65 72 27 73 20 P. L' Ecuyer's
0110: 4d 52 47 33 32 6b 33 61 20 50 52 47 4e 0d 0a 20 MRG32k3a PRGN..
0120: 20 6d 72 67 33 32 6b 33 61 2d 61 2e 73 63 6d 20 mrg32k3a-a.scm
0130: 2d 20 63 6f 72 65 20 67 65 6e 65 72 61 74 6f 72 - core generator
0140: 20 69 6e 20 53 63 68 65 6d 65 20 69 6e 74 65 67 in Scheme integ
0150: 65 72 73 0d 0a 20 20 6d 72 67 33 32 6b 33 61 2d ers.. mrg32k3a-
0160: 62 2e 63 20 20 20 2d 20 63 6f 72 65 20 67 65 6e b.c - core gen
0170: 65 72 61 74 6f 72 20 69 6e 20 43 20 64 6f 75 62 erator in C doub
0180: 6c 65 73 20 66 6f 72 20 53 63 68 65 6d 65 20 34 les for Scheme 4
0190: 38 0d 0a 20 20 6d 72 67 33 32 6b 33 61 2d 63 2e 8.. mrg32k3a-c.
01a0: 73 63 6d 20 2d 20 63 6f 72 65 20 67 65 6e 65 72 scm - core gener
01b0: 61 74 6f 72 20 69 6e 20 47 61 6d 62 69 74 20 5b ator in Gambit [
01c0: 53 63 68 65 6d 65 5d 20 66 6c 6f 6e 75 6d 73 0d Scheme] flonums.
01d0: 0a 20 20 73 72 66 69 2d 32 37 2d 61 2e 73 63 6d . srfi-27-a.scm
01e0: 20 20 2d 20 53 63 68 65 6d 65 20 34 38 20 70 61 - Scheme 48 pa
01f0: 63 6b 61 67 65 20 64 65 66 69 6e 69 74 69 6f 6e ckage definition
0200: 20 66 6f 72 20 53 63 68 65 6d 65 2d 6f 6e 6c 79 for Scheme-only
0210: 20 69 6d 70 6c 2e 0d 0a 20 20 73 72 66 69 2d 32 impl... srfi-2
0220: 37 2d 62 2e 73 63 6d 20 20 2d 20 53 63 68 65 6d 7-b.scm - Schem
0230: 65 20 34 38 20 70 61 63 6b 61 67 65 20 64 65 66 e 48 package def
0240: 69 6e 69 74 69 6f 6e 20 66 6f 72 20 43 2f 53 63 inition for C/Sc
0250: 68 65 6d 65 20 69 6d 70 6c 2e 0d 0a 20 20 73 72 heme impl... sr
0260: 66 69 2d 32 37 2d 63 2e 73 63 6d 20 20 2d 20 47 fi-27-c.scm - G
0270: 61 6d 62 69 74 20 64 65 66 69 6e 69 74 69 6f 6e ambit definition
0280: 20 66 6f 72 20 53 63 68 65 6d 65 2d 6f 6e 6c 79 for Scheme-only
0290: 20 69 6d 70 6c 2e 0d 0a 20 20 63 6f 6e 66 74 65 impl... confte
02a0: 73 74 2e 73 63 6d 20 20 20 2d 20 63 6f 6e 66 69 st.scm - confi
02b0: 64 65 6e 63 65 20 74 65 73 74 73 20 66 6f 72 20 dence tests for
02c0: 74 68 65 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 the implementati
02d0: 6f 6e 0d 0a 0d 0a 49 6d 70 6c 65 6d 65 6e 74 61 on....Implementa
02e0: 74 69 6f 6e 73 0d 0a 2d 2d 2d 2d 2d 2d 2d 2d 2d tions..---------
02f0: 2d 2d 2d 2d 2d 2d 0d 0a 0d 0a 54 68 65 20 69 6d ------....The im
0300: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 68 61 73 plementation has
0310: 20 62 65 65 6e 20 66 61 63 74 6f 72 65 64 20 69 been factored i
0320: 6e 74 6f 20 74 68 72 65 65 20 70 61 72 74 73 2e nto three parts.
0330: 0d 0a 4f 6e 65 20 70 61 72 74 20 69 6d 70 6c 65 ..One part imple
0340: 6d 65 6e 74 73 20 74 68 65 20 63 6f 72 65 20 67 ments the core g
0350: 65 6e 65 72 61 74 6f 72 2c 20 6f 6e 65 20 70 61 enerator, one pa
0360: 72 74 20 70 72 6f 76 69 64 65 73 0d 0a 74 68 65 rt provides..the
0370: 20 6d 6f 72 65 20 67 65 6e 65 72 69 63 20 66 75 more generic fu
0380: 6e 63 74 69 6f 6e 61 6c 69 74 79 20 61 73 20 73 nctionality as s
0390: 70 65 63 69 66 69 65 64 20 69 6e 20 74 68 65 20 pecified in the
03a0: 53 52 46 49 2c 0d 0a 61 6e 64 20 6f 6e 65 20 70 SRFI,..and one p
03b0: 61 72 74 20 63 6f 6d 62 69 6e 65 73 20 74 68 65 art combines the
03c0: 20 70 61 72 74 73 20 61 6e 64 20 70 72 6f 76 69 parts and provi
03d0: 64 65 73 20 74 68 65 20 69 6e 74 65 72 66 61 63 des the interfac
03e0: 65 0d 0a 61 73 20 73 70 65 63 69 66 69 65 64 20 e..as specified
03f0: 69 6e 20 74 68 65 20 53 52 46 49 2e 0d 0a 0d 0a in the SRFI.....
0400: 61 29 20 41 20 53 63 68 65 6d 65 2d 6f 6e 6c 79 a) A Scheme-only
0410: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 implementation
0420: 66 6f 72 20 53 63 68 65 6d 65 20 34 38 20 30 2e for Scheme 48 0.
0430: 35 37 3a 0d 0a 20 20 20 20 20 73 72 66 69 2d 32 57:.. srfi-2
0440: 37 2d 61 2e 73 63 6d 0d 0a 20 20 20 20 20 6d 72 7-a.scm.. mr
0450: 67 33 32 6b 33 61 2d 61 2e 73 63 6d 0d 0a 20 20 g32k3a-a.scm..
0460: 20 20 20 6d 72 67 33 32 6b 33 61 2e 73 63 6d 0d mrg32k3a.scm.
0470: 0a 0d 0a 20 20 20 54 68 69 73 20 69 6d 70 6c 65 ... This imple
0480: 6d 65 6e 74 61 74 69 6f 6e 20 75 73 65 73 20 35 mentation uses 5
0490: 34 2d 62 69 74 20 53 63 68 65 6d 65 20 69 6e 74 4-bit Scheme int
04a0: 65 67 65 72 73 20 66 6f 72 20 61 6c 6c 0d 0a 20 egers for all..
04b0: 20 20 61 72 69 74 68 6d 65 74 69 63 73 20 6f 66 arithmetics of
04c0: 20 74 68 65 20 67 65 6e 65 72 61 74 6f 72 2e 20 the generator.
04d0: 54 68 65 20 72 65 73 75 6c 74 20 61 72 65 20 53 The result are S
04e0: 63 68 65 6d 65 20 69 6e 74 65 67 65 72 73 0d 0a cheme integers..
04f0: 20 20 20 61 6e 64 20 69 6e 65 78 61 63 74 20 53 and inexact S
0500: 63 68 65 6d 65 20 6e 75 6d 62 65 72 73 20 77 68 cheme numbers wh
0510: 65 6e 20 66 6c 6f 61 74 69 6e 67 20 70 6f 69 6e en floating poin
0520: 74 20 76 61 6c 75 65 73 20 61 72 65 0d 0a 20 20 t values are..
0530: 20 72 65 71 75 65 73 74 65 64 2e 20 0d 0a 0d 0a requested. ....
0540: 20 20 20 54 68 65 20 69 6d 70 6c 65 6d 65 6e 74 The implement
0550: 61 74 69 6f 6e 20 69 73 20 73 6c 6f 77 20 62 75 ation is slow bu
0560: 74 20 74 72 69 65 73 20 74 6f 20 73 74 61 79 20 t tries to stay
0570: 61 77 61 79 20 66 72 6f 6d 0d 0a 20 20 20 75 6e away from.. un
0580: 70 6f 72 74 61 62 6c 65 20 66 65 61 74 75 72 65 portable feature
0590: 73 20 61 73 20 6d 75 63 68 20 61 73 20 70 6f 73 s as much as pos
05a0: 73 69 62 6c 65 2e 0d 0a 0d 0a 62 29 20 41 6e 20 sible.....b) An
05b0: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 implementation i
05c0: 6e 20 53 63 68 65 6d 65 20 34 38 20 30 2e 35 37 n Scheme 48 0.57
05d0: 20 61 6e 64 20 41 4e 53 49 2d 43 3a 0d 0a 20 20 and ANSI-C:..
05e0: 20 20 20 73 72 66 69 2d 32 37 2d 62 2e 73 63 6d srfi-27-b.scm
05f0: 0d 0a 20 20 20 20 20 6d 72 67 33 32 6b 33 61 2d .. mrg32k3a-
0600: 62 2e 73 63 6d 0d 0a 20 20 20 20 20 6d 72 67 33 b.scm.. mrg3
0610: 32 6b 33 61 2e 73 63 6d 0d 0a 0d 0a 20 20 20 54 2k3a.scm.... T
0620: 68 69 73 20 69 73 20 61 20 6d 6f 72 65 20 72 65 his is a more re
0630: 61 6c 69 73 74 69 63 20 69 6d 70 6c 65 6d 65 6e alistic implemen
0640: 74 61 74 69 6f 6e 20 75 73 69 6e 67 20 43 27 73 tation using C's
0650: 20 28 64 6f 75 62 6c 65 29 0d 0a 20 20 20 64 61 (double).. da
0660: 74 61 74 79 70 65 20 66 6f 72 20 74 68 65 20 63 tatype for the c
0670: 6f 72 65 20 67 65 6e 65 72 61 74 6f 72 20 61 6e ore generator an
0680: 64 20 35 34 2d 62 69 74 20 53 63 68 65 6d 65 20 d 54-bit Scheme
0690: 69 6e 74 65 67 65 72 73 0d 0a 20 20 20 66 6f 72 integers.. for
06a0: 20 74 68 65 20 6d 6f 72 65 20 69 6e 66 72 65 71 the more infreq
06b0: 75 65 6e 74 20 6f 70 65 72 61 74 69 6f 6e 73 20 uent operations
06c0: 6f 6e 20 74 68 65 20 73 74 61 74 65 20 6c 69 6b on the state lik
06d0: 65 20 74 68 65 0d 0a 20 20 20 72 61 6e 64 6f 6d e the.. random
06e0: 2d 73 6f 75 72 63 65 2d 70 73 65 75 64 6f 2d 72 -source-pseudo-r
06f0: 61 6e 64 6f 6d 69 7a 65 21 20 6f 70 65 72 61 74 andomize! operat
0700: 69 6f 6e 2e 0d 0a 0d 0a 20 20 20 54 68 69 73 20 ion..... This
0710: 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 implementation i
0720: 73 20 6d 65 61 6e 74 20 61 73 20 61 6e 20 65 78 s meant as an ex
0730: 61 6d 70 6c 65 20 66 6f 72 20 61 20 72 65 61 6c ample for a real
0740: 69 73 74 69 63 0d 0a 20 20 20 6e 61 74 69 76 65 istic.. native
0750: 20 63 6f 64 65 20 69 6d 70 6c 65 6d 65 6e 74 61 code implementa
0760: 74 69 6f 6e 20 6f 66 20 74 68 65 20 53 52 46 49 tion of the SRFI
0770: 2e 20 50 65 72 66 6f 72 6d 61 6e 63 65 20 69 73 . Performance is
0780: 20 67 6f 6f 64 2e 0d 0a 0d 0a 63 29 20 41 20 53 good.....c) A S
0790: 63 68 65 6d 65 2d 6f 6e 6c 79 20 69 6d 70 6c 65 cheme-only imple
07a0: 6d 65 6e 74 61 74 69 6f 6e 20 66 6f 72 20 47 61 mentation for Ga
07b0: 6d 62 69 74 20 33 2e 30 3a 0d 0a 20 20 20 20 20 mbit 3.0:..
07c0: 73 72 66 69 2d 32 37 2d 63 2e 73 63 6d 0d 0a 20 srfi-27-c.scm..
07d0: 20 20 20 20 6d 72 67 33 32 6b 33 61 2d 63 2e 73 mrg32k3a-c.s
07e0: 63 6d 0d 0a 20 20 20 20 20 6d 72 67 33 32 6b 33 cm.. mrg32k3
07f0: 61 2e 73 63 6d 0d 0a 0d 0a 20 20 20 54 68 69 73 a.scm.... This
0800: 20 69 6d 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 implementation
0810: 75 73 65 73 20 47 61 6d 62 69 74 27 73 20 36 34 uses Gambit's 64
0820: 2d 62 69 74 20 66 6c 6f 6e 75 6d 73 2e 20 49 74 -bit flonums. It
0830: 20 69 73 0d 0a 20 20 20 65 6e 74 69 72 65 6c 79 is.. entirely
0840: 20 77 72 69 74 74 65 6e 20 69 6e 20 53 63 68 65 written in Sche
0850: 6d 65 20 62 75 74 20 75 73 65 73 20 61 20 66 65 me but uses a fe
0860: 77 20 73 70 65 63 69 61 6c 20 66 65 61 74 75 72 w special featur
0870: 65 73 0d 0a 20 20 20 6f 66 20 74 68 65 20 47 61 es.. of the Ga
0880: 6d 62 69 74 20 73 79 73 74 65 6d 20 74 6f 20 74 mbit system to t
0890: 65 6c 6c 20 74 68 65 20 63 6f 6d 70 69 6c 65 72 ell the compiler
08a0: 2e 0d 0a 0d 0a 20 20 20 54 68 69 73 20 69 6d 70 ..... This imp
08b0: 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 69 73 20 6d lementation is m
08c0: 65 61 6e 74 20 61 73 20 61 6e 20 65 78 61 6d 70 eant as an examp
08d0: 6c 65 20 66 6f 72 20 61 20 72 65 61 6c 69 73 74 le for a realist
08e0: 69 63 0d 0a 20 20 20 53 63 68 65 6d 65 20 69 6d ic.. Scheme im
08f0: 70 6c 65 6d 65 6e 74 61 74 69 6f 6e 20 75 73 69 plementation usi
0900: 6e 67 20 66 6c 6f 6e 75 6d 73 20 69 6e 20 53 63 ng flonums in Sc
0910: 68 65 6d 65 20 61 6e 64 20 6e 6f 20 43 2d 63 6f heme and no C-co
0920: 64 65 2e 0d 0a 20 20 20 50 65 72 66 6f 72 6d 61 de... Performa
0930: 6e 63 65 20 69 73 20 67 6f 6f 64 20 77 68 65 6e nce is good when
0940: 20 74 68 65 20 63 6f 64 65 20 69 73 20 75 73 65 the code is use
0950: 64 20 69 6e 20 63 6f 6d 70 69 6c 65 64 20 66 6f d in compiled fo
0960: 72 6d 3b 0d 0a 20 20 20 74 68 65 20 69 6d 70 6c rm;.. the impl
0970: 65 6d 65 6e 74 61 74 69 6f 6e 20 68 61 73 20 62 ementation has b
0980: 65 65 6e 20 6f 70 74 69 6d 69 7a 65 64 20 62 79 een optimized by
0990: 20 42 72 61 64 20 4c 75 63 69 65 72 2e 20 54 68 Brad Lucier. Th
09a0: 69 73 0d 0a 20 20 20 68 61 73 20 72 65 73 75 6c is.. has resul
09b0: 74 65 64 20 69 6e 20 61 20 73 75 62 74 61 6e 74 ted in a subtant
09c0: 69 61 6c 20 70 65 72 66 6f 72 6d 61 6e 63 65 20 ial performance
09d0: 67 61 69 6e 2e 0d 0a gain...