3.99.0.8: unify 'random' and SRFI-27
svn: r8171
This commit is contained in:
parent
5bc7bd1142
commit
63e8522426
|
@ -572,25 +572,28 @@ used.
|
|||
@; ------------------------------------------------------------------------
|
||||
@section{Random Numbers}
|
||||
|
||||
@defproc*[([(random [k (and/c positive-exact-integer?
|
||||
(integer-in 1 (sub1 (expt 2 31))))])
|
||||
@defproc*[([(random [k (integer-in 1 4294967087)]
|
||||
[generator pseudo-random-generator?
|
||||
(current-pseudo-random-generator)])
|
||||
nonnegative-exact-integer?]
|
||||
[(random) (and/c real? inexact? (>/c 0) (</c 1))])]{
|
||||
[(random [generator pseudo-random-generator?
|
||||
(current-pseudo-random-generator)])
|
||||
(and/c real? inexact? (>/c 0) (</c 1))])]{
|
||||
|
||||
When called with one argument, returns a random exact integer in the
|
||||
range @scheme[0] to @math{@scheme[k]-1}. The number is provided by the
|
||||
current pseudo-random number generator (see
|
||||
@scheme[current-pseudo-random-generator]), which maintains an internal
|
||||
state for generating numbers. The random number generator uses a
|
||||
54-bit version of L'Ecuyer's MRG32k3a algorithm.
|
||||
When called with and integer argument @scheme[k], returns a random
|
||||
exact integer in the range @scheme[0] to @math{@scheme[k]-1}. When
|
||||
called with zero arguments, returns a random inexact number between
|
||||
@scheme[0] and @scheme[1], exclusive.
|
||||
|
||||
When called with zero arguments, returns a random inexact number
|
||||
between @scheme[0] and @scheme[1], exclusive, using the current
|
||||
pseudo-random number generator.}
|
||||
In each case, the number is provided by the given pseudo-random number
|
||||
generator (which defaults to the current one, as produced by
|
||||
@scheme[current-pseudo-random-generator]). The generator maintains an
|
||||
internal state for generating numbers. The random number generator
|
||||
uses a 54-bit version of L'Ecuyer's MRG32k3a algorithm
|
||||
@cite["L'Ecuyer02"].}
|
||||
|
||||
|
||||
@defproc[(random-seed [k (and/c nonnegative-exact-integer?
|
||||
(integer-in 1 (sub1 (expt 2 31))))])
|
||||
@defproc[(random-seed [k (integer-in 1 (sub1 (expt 2 31)))])
|
||||
void?]{
|
||||
|
||||
Seeds the current pseudo-random number generator with
|
||||
|
@ -638,6 +641,14 @@ must be in the range @scheme[0] to @scheme[4294944442], inclusive; at
|
|||
least one of the first three integers must be non-zero; and at least
|
||||
one of the last three integers must be non-zero.}
|
||||
|
||||
@defproc[(vector->pseudo-random-generator! [generator pseudo-random-generator?]
|
||||
[vec vector?])
|
||||
void?]{
|
||||
|
||||
Like @scheme[vector->pseudo-random-generator], but changes
|
||||
@scheme[generator] to the given state, instead of creating a new
|
||||
generator.}
|
||||
|
||||
@; ------------------------------------------------------------------------
|
||||
@section{Number--String Conversions}
|
||||
|
||||
|
@ -657,13 +668,15 @@ one of the last three integers must be non-zero.}
|
|||
@examples[(number->string 3.0) (number->string 255 8)]}
|
||||
|
||||
|
||||
@defproc[(string->number [s string?] [radix (exact-integer-in/c 2 16)
|
||||
10]) (or/c number? false/c)]{ Reads and returns a number datum from
|
||||
@scheme[s] (see @secref["parse-number"]), returning @scheme[#f] if
|
||||
@scheme[s] does not parse exactly as a number datum (with no
|
||||
whitespace). The optional @scheme[radix] argument specifies the default
|
||||
base for the number, which can be overriden by @litchar{#b},
|
||||
@litchar{#o}, @litchar{#d}, or @litchar{#x} in the string.
|
||||
@defproc[(string->number [s string?] [radix (integer-in 2 16) 10])
|
||||
(or/c number? false/c)]{
|
||||
|
||||
Reads and returns a number datum from @scheme[s] (see
|
||||
@secref["parse-number"]), returning @scheme[#f] if @scheme[s] does not
|
||||
parse exactly as a number datum (with no whitespace). The optional
|
||||
@scheme[radix] argument specifies the default base for the number,
|
||||
which can be overriden by @litchar{#b}, @litchar{#o}, @litchar{#d}, or
|
||||
@litchar{#x} in the string.
|
||||
|
||||
@examples[(string->number "3.0+2.5i") (string->number "hello")
|
||||
(string->number "111" 7) (string->number "#b111" 7)]
|
||||
|
|
|
@ -76,6 +76,12 @@ where @schememodname[scheme] includes all of
|
|||
#:location "Principles and Practice of Parallel Programming"
|
||||
#:date "1990")
|
||||
|
||||
(bib-entry #:key "L'Ecuyer02"
|
||||
#:author "Pierre L'Ecuyer, Richard Simard, E. Jack Chen, and W. David Kelton"
|
||||
#:title "An Object-Oriented Random-Number Package With Many Long Streams and Substreams"
|
||||
#:location "Operations Research, 50(6)"
|
||||
#:date "2002")
|
||||
|
||||
(bib-entry #:key "Queinnec91"
|
||||
#:author "Queinnec and Serpette"
|
||||
#:title "A Dynamic Extent Control Operator for Partial Continuations"
|
||||
|
|
|
@ -477,7 +477,7 @@ import sources.}
|
|||
@defproc[(make-require-transformer [proc ((syntax?) . ->* . ((listof import?) (listof import-source?)))])
|
||||
require-transformer?]{
|
||||
|
||||
Creates a @tech{require transformer} (i.e., a structure with the
|
||||
Creates a @deftech{require transformer} (i.e., a structure with the
|
||||
@scheme[prop:require-transformer] property) using the given procedure
|
||||
as the transformer.}
|
||||
|
||||
|
|
|
@ -1,94 +1,365 @@
|
|||
(module random-bits mzscheme
|
||||
; MODULE DEFINITION FOR SRFI-27
|
||||
; =============================
|
||||
;
|
||||
; based on Sebastian.Egner@philips.com, Mar-2002, in PLT 204
|
||||
; plus the C code from that SRFI, which is built into
|
||||
; MzScheme's random routines.
|
||||
; Contributors include David Van Horn and Chongkai Zhu.
|
||||
|
||||
; GENERIC PART OF MRG32k3a-GENERATOR FOR SRFI-27
|
||||
; ==============================================
|
||||
;
|
||||
; Sebastian.Egner@philips.com, 2002.
|
||||
;
|
||||
; This is the generic R5RS-part of the implementation of the MRG32k3a
|
||||
; generator to be used in SRFI-27. It is based on a separate implementation
|
||||
; of the core generator (presumably in native code) and on code to
|
||||
; provide essential functionality not available in R5RS (see below).
|
||||
;
|
||||
; compliance:
|
||||
; Scheme R5RS with integer covering at least {-2^53..2^53-1}.
|
||||
; In addition,
|
||||
; SRFI-23: error
|
||||
;
|
||||
; history of this file:
|
||||
; SE, 22-Mar-2002: refactored from earlier versions
|
||||
; SE, 25-Mar-2002: pack/unpack need not allocate
|
||||
; SE, 27-Mar-2002: changed interface to core generator
|
||||
; SE, 10-Apr-2002: updated spec of mrg32k3a-random-integer
|
||||
|
||||
; Generator
|
||||
; =========
|
||||
;
|
||||
; Pierre L'Ecuyer's MRG32k3a generator is a Combined Multiple Recursive
|
||||
; Generator. It produces the sequence {(x[1,n] - x[2,n]) mod m1 : n}
|
||||
; defined by the two recursive generators
|
||||
;
|
||||
; x[1,n] = ( a12 x[1,n-2] + a13 x[1,n-3]) mod m1,
|
||||
; x[2,n] = (a21 x[2,n-1] + a23 x[2,n-3]) mod m2,
|
||||
;
|
||||
; where the constants are
|
||||
; m1 = 4294967087 = 2^32 - 209 modulus of 1st component
|
||||
; m2 = 4294944443 = 2^32 - 22853 modulus of 2nd component
|
||||
; a12 = 1403580 recursion coefficients
|
||||
; a13 = -810728
|
||||
; a21 = 527612
|
||||
; a23 = -1370589
|
||||
;
|
||||
; The generator passes all tests of G. Marsaglia's Diehard testsuite.
|
||||
; Its period is (m1^3 - 1)(m2^3 - 1)/2 which is nearly 2^191.
|
||||
; L'Ecuyer reports: "This generator is well-behaved in all dimensions
|
||||
; up to at least 45: ..." [with respect to the spectral test, SE].
|
||||
;
|
||||
; The period is maximal for all values of the seed as long as the
|
||||
; state of both recursive generators is not entirely zero.
|
||||
;
|
||||
; As the successor state is a linear combination of previous
|
||||
; states, it is possible to advance the generator by more than one
|
||||
; iteration by applying a linear transformation. The following
|
||||
; publication provides detailed information on how to do that:
|
||||
;
|
||||
; [1] P. L'Ecuyer, R. Simard, E. J. Chen, W. D. Kelton:
|
||||
; An Object-Oriented Random-Number Package With Many Long
|
||||
; Streams and Substreams. 2001.
|
||||
; To appear in Operations Research.
|
||||
;
|
||||
; Arithmetics
|
||||
; ===========
|
||||
;
|
||||
; The MRG32k3a generator produces values in {0..2^32-209-1}. All
|
||||
; subexpressions of the actual generator fit into {-2^53..2^53-1}.
|
||||
; The code below assumes that Scheme's "integer" covers this range.
|
||||
; In addition, it is assumed that floating point literals can be
|
||||
; read and there is some arithmetics with inexact numbers.
|
||||
;
|
||||
; However, for advancing the state of the generator by more than
|
||||
; one step at a time, the full range {0..2^32-209-1} is needed.
|
||||
|
||||
|
||||
; Required: Backbone Generator
|
||||
; ============================
|
||||
;
|
||||
; At this point in the code, the following procedures are assumed
|
||||
; to be defined to execute the core generator:
|
||||
;
|
||||
; (mrg32k3a-pack-state unpacked-state) -> packed-state
|
||||
; (mrg32k3a-unpack-state packed-state) -> unpacked-state
|
||||
; pack/unpack a state of the generator. The core generator works
|
||||
; on packed states, passed as an explicit argument, only. This
|
||||
; allows native code implementations to store their state in a
|
||||
; suitable form. Unpacked states are #(x10 x11 x12 x20 x21 x22)
|
||||
; with integer x_ij. Pack/unpack need not allocate new objects
|
||||
; in case packed and unpacked states are identical.
|
||||
;
|
||||
; (mrg32k3a-random-range) -> m-max
|
||||
; (mrg32k3a-random-integer packed-state range) -> x in {0..range-1}
|
||||
; advance the state of the generator and return the next random
|
||||
; range-limited integer.
|
||||
; Note that the state is not necessarily advanced by just one
|
||||
; step because we use the rejection method to avoid any problems
|
||||
; with distribution anomalies.
|
||||
; The range argument must be an exact integer in {1..m-max}.
|
||||
; It can be assumed that range is a fixnum if the Scheme system
|
||||
; has such a number representation.
|
||||
;
|
||||
; (mrg32k3a-random-real packed-state) -> x in (0,1)
|
||||
; advance the state of the generator and return the next random
|
||||
; real number between zero and one (both excluded). The type of
|
||||
; the result should be a flonum if possible.
|
||||
|
||||
#lang scheme/base
|
||||
|
||||
(require mzlib/contract)
|
||||
|
||||
(require (lib "contract.ss"))
|
||||
(provide random-real
|
||||
default-random-source
|
||||
make-random-source
|
||||
random-source?
|
||||
random-source-state-ref
|
||||
random-source-state-set!
|
||||
random-source-randomize!
|
||||
random-source-pseudo-randomize!)
|
||||
|
||||
(define (random-source? v)
|
||||
(pseudo-random-generator? v))
|
||||
|
||||
(provide/contract (random-integer
|
||||
(-> exact-positive-integer? any))
|
||||
(random-source-make-integers
|
||||
(-> random-source? (-> exact-positive-integer? any)))
|
||||
(random-source-make-reals
|
||||
(case->
|
||||
(-> random-source? any)
|
||||
(-> random-source? (and/c (>/c 0) (</c 1)) any))))
|
||||
|
||||
(define (make-random-source)
|
||||
(let ([new (make-pseudo-random-generator)])
|
||||
(parameterize ([current-pseudo-random-generator new])
|
||||
(random-seed 0))
|
||||
new))
|
||||
|
||||
(define default-random-source (make-random-source))
|
||||
|
||||
(define (random-source-state-ref s)
|
||||
(pseudo-random-generator->vector s))
|
||||
|
||||
(define (random-source-state-set! s state)
|
||||
(vector->pseudo-random-generator! s state))
|
||||
|
||||
(define (random-source-randomize! s)
|
||||
(let ([new (make-pseudo-random-generator)])
|
||||
(random-source-state-set! s (random-source-state-ref new))))
|
||||
|
||||
(provide random-real
|
||||
default-random-source
|
||||
(rename s:make-random-source make-random-source)
|
||||
random-source?
|
||||
random-source-state-ref
|
||||
random-source-state-set!
|
||||
random-source-randomize!
|
||||
random-source-pseudo-randomize!)
|
||||
(define (random-source-pseudo-randomize! s i j)
|
||||
(let ([vec (mrg32k3a-pseudo-randomize-state i j)])
|
||||
(vector->pseudo-random-generator! s vec)))
|
||||
|
||||
(define (my-random-integer n s)
|
||||
(if (<= n 4294967087)
|
||||
(random n s)
|
||||
(mrg32k3a-random-large s n)))
|
||||
|
||||
(define (random-source-make-integers s)
|
||||
(lambda (n)
|
||||
(my-random-integer n s)))
|
||||
|
||||
(define integer/c
|
||||
(and/c integer? exact? positive?))
|
||||
(define random-source-make-reals
|
||||
(case-lambda
|
||||
[(s) (lambda () (random s))]
|
||||
[(s unit)
|
||||
(let ((n (inexact->exact (floor (/ unit)))))
|
||||
(lambda ()
|
||||
(* (add1 (my-random-integer n s)) unit)))]))
|
||||
|
||||
(define-struct random-source (generator))
|
||||
|
||||
(provide/contract (random-integer
|
||||
(-> integer/c any))
|
||||
(random-source-make-integers
|
||||
(-> random-source? (-> integer/c any)))
|
||||
(random-source-make-reals
|
||||
(case->
|
||||
(-> random-source? any)
|
||||
(-> random-source? (and/c (>/c 0) (</c 1)) any))))
|
||||
|
||||
(define (s:make-random-source)
|
||||
(let ((old (current-pseudo-random-generator))
|
||||
(new (make-pseudo-random-generator)))
|
||||
(current-pseudo-random-generator new)
|
||||
(random-seed 0)
|
||||
(begin0 (make-random-source new)
|
||||
(current-pseudo-random-generator old))))
|
||||
|
||||
(define my-default-random-source
|
||||
(s:make-random-source))
|
||||
|
||||
(define-syntax default-random-source
|
||||
(syntax-id-rules (set!)
|
||||
((set! default-random-source expr)
|
||||
(set-random-source-generator! default-random-source
|
||||
(random-source-generator expr)))
|
||||
((default-random-source expr ...)
|
||||
(my-default-random-source expr ...))
|
||||
(default-random-source
|
||||
my-default-random-source)))
|
||||
|
||||
(define (random-source-state-ref s)
|
||||
(pseudo-random-generator->vector (random-source-generator s)))
|
||||
|
||||
(define (random-source-state-set! s state)
|
||||
(set-random-source-generator! s (vector->pseudo-random-generator state)))
|
||||
|
||||
(define (random-source-randomize! s)
|
||||
(set-random-source-generator! s (make-pseudo-random-generator)))
|
||||
|
||||
(define (random-source-pseudo-randomize! s . ij)
|
||||
(parameterize ((current-pseudo-random-generator
|
||||
(random-source-generator s)))
|
||||
(random-seed (modulo (equal-hash-code ij) 2147483648))))
|
||||
|
||||
(define (my-random-integer n)
|
||||
(if (<= n 2147483647)
|
||||
(random n)
|
||||
(+ (* (my-random-integer (quotient n 1073741824)) 1073741824)
|
||||
(random 1073741824))))
|
||||
|
||||
(define (random-source-make-integers s)
|
||||
(lambda (n)
|
||||
(parameterize ((current-pseudo-random-generator
|
||||
(random-source-generator s)))
|
||||
(my-random-integer n))))
|
||||
|
||||
(define random-source-make-reals
|
||||
(case-lambda
|
||||
((s)
|
||||
(lambda ()
|
||||
(parameterize ((current-pseudo-random-generator
|
||||
(random-source-generator s)))
|
||||
(random))))
|
||||
((s unit)
|
||||
(let ((n (inexact->exact (floor (/ unit)))))
|
||||
(lambda ()
|
||||
(parameterize ((current-pseudo-random-generator
|
||||
(random-source-generator s)))
|
||||
(* (add1 (my-random-integer n)) unit)))))))
|
||||
|
||||
(define random-integer
|
||||
(random-source-make-integers my-default-random-source))
|
||||
|
||||
(define random-real
|
||||
(random-source-make-reals my-default-random-source))
|
||||
)
|
||||
(define random-integer
|
||||
(random-source-make-integers default-random-source))
|
||||
|
||||
(define random-real
|
||||
(random-source-make-reals default-random-source))
|
||||
|
||||
; Large Integers
|
||||
; ==============
|
||||
;
|
||||
; To produce large integer random deviates, for n > m-max, we first
|
||||
; construct large random numbers in the range {0..m-max^k-1} for some
|
||||
; k such that m-max^k >= n and then use the rejection method to choose
|
||||
; uniformly from the range {0..n-1}.
|
||||
|
||||
(define mrg32k3a-m-max 4294967087)
|
||||
(define (mrg32k3a-random-integer s n) (random n s))
|
||||
|
||||
(define (mrg32k3a-random-power state k) ; n = m-max^k, k >= 1
|
||||
(if (= k 1)
|
||||
(mrg32k3a-random-integer state mrg32k3a-m-max)
|
||||
(+ (* (mrg32k3a-random-power state (- k 1)) mrg32k3a-m-max)
|
||||
(mrg32k3a-random-integer state mrg32k3a-m-max))))
|
||||
|
||||
(define (mrg32k3a-random-large state n) ; n > m-max
|
||||
(do ((k 2 (+ k 1))
|
||||
(mk (* mrg32k3a-m-max mrg32k3a-m-max) (* mk mrg32k3a-m-max)))
|
||||
((>= mk n)
|
||||
(let* ((mk-by-n (quotient mk n))
|
||||
(a (* mk-by-n n)))
|
||||
(do ((x (mrg32k3a-random-power state k)
|
||||
(mrg32k3a-random-power state k)))
|
||||
((< x a) (quotient x mk-by-n)))))))
|
||||
|
||||
|
||||
; Pseudo-Randomization
|
||||
; ====================
|
||||
;
|
||||
; Reference [1] above shows how to obtain many long streams and
|
||||
; substream from the backbone generator.
|
||||
;
|
||||
; The idea is that the generator is a linear operation on the state.
|
||||
; Hence, we can express this operation as a 3x3-matrix acting on the
|
||||
; three most recent states. Raising the matrix to the k-th power, we
|
||||
; obtain the operation to advance the state by k steps at once. The
|
||||
; virtual streams and substreams are now simply parts of the entire
|
||||
; periodic sequence (which has period around 2^191).
|
||||
;
|
||||
; For the implementation it is necessary to compute with matrices in
|
||||
; the ring (Z/(m1*m1)*Z)^(3x3). By the Chinese-Remainder Theorem, this
|
||||
; is isomorphic to ((Z/m1*Z) x (Z/m2*Z))^(3x3). We represent such a pair
|
||||
; of matrices
|
||||
; [ [[x00 x01 x02],
|
||||
; [x10 x11 x12],
|
||||
; [x20 x21 x22]], mod m1
|
||||
; [[y00 y01 y02],
|
||||
; [y10 y11 y12],
|
||||
; [y20 y21 y22]] mod m2]
|
||||
; as a vector of length 18 of the integers as writen above:
|
||||
; #(x00 x01 x02 x10 x11 x12 x20 x21 x22
|
||||
; y00 y01 y02 y10 y11 y12 y20 y21 y22)
|
||||
;
|
||||
; As the implementation should only use the range {-2^53..2^53-1}, the
|
||||
; fundamental operation (x*y) mod m, where x, y, m are nearly 2^32,
|
||||
; is computed by breaking up x and y as x = x1*w + x0 and y = y1*w + y0
|
||||
; where w = 2^16. In this case, all operations fit the range because
|
||||
; w^2 mod m is a small number. If proper multiprecision integers are
|
||||
; available this is not necessary, but pseudo-randomize! is an expected
|
||||
; to be called only occasionally so we do not provide this implementation.
|
||||
|
||||
(define mrg32k3a-m1 4294967087) ; modulus of component 1
|
||||
(define mrg32k3a-m2 4294944443) ; modulus of component 2
|
||||
|
||||
(define mrg32k3a-initial-state ; 0 3 6 9 12 15 of A^16, see below
|
||||
'#( 1062452522
|
||||
2961816100
|
||||
342112271
|
||||
2854655037
|
||||
3321940838
|
||||
3542344109))
|
||||
|
||||
(define mrg32k3a-generators #f) ; computed when needed
|
||||
|
||||
(define (mrg32k3a-pseudo-randomize-state i j)
|
||||
|
||||
(define (product A B) ; A*B in ((Z/m1*Z) x (Z/m2*Z))^(3x3)
|
||||
|
||||
(define w 65536) ; wordsize to split {0..2^32-1}
|
||||
(define w-sqr1 209) ; w^2 mod m1
|
||||
(define w-sqr2 22853) ; w^2 mod m2
|
||||
|
||||
(define (lc i0 i1 i2 j0 j1 j2 m w-sqr) ; linear combination
|
||||
(let ((a0h (quotient (vector-ref A i0) w))
|
||||
(a0l (modulo (vector-ref A i0) w))
|
||||
(a1h (quotient (vector-ref A i1) w))
|
||||
(a1l (modulo (vector-ref A i1) w))
|
||||
(a2h (quotient (vector-ref A i2) w))
|
||||
(a2l (modulo (vector-ref A i2) w))
|
||||
(b0h (quotient (vector-ref B j0) w))
|
||||
(b0l (modulo (vector-ref B j0) w))
|
||||
(b1h (quotient (vector-ref B j1) w))
|
||||
(b1l (modulo (vector-ref B j1) w))
|
||||
(b2h (quotient (vector-ref B j2) w))
|
||||
(b2l (modulo (vector-ref B j2) w)))
|
||||
(modulo
|
||||
(+ (* (+ (* a0h b0h)
|
||||
(* a1h b1h)
|
||||
(* a2h b2h))
|
||||
w-sqr)
|
||||
(* (+ (* a0h b0l)
|
||||
(* a0l b0h)
|
||||
(* a1h b1l)
|
||||
(* a1l b1h)
|
||||
(* a2h b2l)
|
||||
(* a2l b2h))
|
||||
w)
|
||||
(* a0l b0l)
|
||||
(* a1l b1l)
|
||||
(* a2l b2l))
|
||||
m)))
|
||||
|
||||
(vector
|
||||
(lc 0 1 2 0 3 6 mrg32k3a-m1 w-sqr1) ; (A*B)_00 mod m1
|
||||
(lc 0 1 2 1 4 7 mrg32k3a-m1 w-sqr1) ; (A*B)_01
|
||||
(lc 0 1 2 2 5 8 mrg32k3a-m1 w-sqr1)
|
||||
(lc 3 4 5 0 3 6 mrg32k3a-m1 w-sqr1) ; (A*B)_10
|
||||
(lc 3 4 5 1 4 7 mrg32k3a-m1 w-sqr1)
|
||||
(lc 3 4 5 2 5 8 mrg32k3a-m1 w-sqr1)
|
||||
(lc 6 7 8 0 3 6 mrg32k3a-m1 w-sqr1)
|
||||
(lc 6 7 8 1 4 7 mrg32k3a-m1 w-sqr1)
|
||||
(lc 6 7 8 2 5 8 mrg32k3a-m1 w-sqr1)
|
||||
(lc 9 10 11 9 12 15 mrg32k3a-m2 w-sqr2) ; (A*B)_00 mod m2
|
||||
(lc 9 10 11 10 13 16 mrg32k3a-m2 w-sqr2)
|
||||
(lc 9 10 11 11 14 17 mrg32k3a-m2 w-sqr2)
|
||||
(lc 12 13 14 9 12 15 mrg32k3a-m2 w-sqr2)
|
||||
(lc 12 13 14 10 13 16 mrg32k3a-m2 w-sqr2)
|
||||
(lc 12 13 14 11 14 17 mrg32k3a-m2 w-sqr2)
|
||||
(lc 15 16 17 9 12 15 mrg32k3a-m2 w-sqr2)
|
||||
(lc 15 16 17 10 13 16 mrg32k3a-m2 w-sqr2)
|
||||
(lc 15 16 17 11 14 17 mrg32k3a-m2 w-sqr2)))
|
||||
|
||||
(define (power A e) ; A^e
|
||||
(cond
|
||||
((zero? e)
|
||||
'#(1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1))
|
||||
((= e 1)
|
||||
A)
|
||||
((even? e)
|
||||
(power (product A A) (quotient e 2)))
|
||||
(else
|
||||
(product (power A (- e 1)) A))))
|
||||
|
||||
(define (power-power A b) ; A^(2^b)
|
||||
(if (zero? b)
|
||||
A
|
||||
(power-power (product A A) (- b 1))))
|
||||
|
||||
(define A ; the MRG32k3a recursion
|
||||
'#( 0 1403580 4294156359
|
||||
1 0 0
|
||||
0 1 0
|
||||
527612 0 4293573854
|
||||
1 0 0
|
||||
0 1 0))
|
||||
|
||||
; check arguments
|
||||
(when (not (and (exact-integer? i)
|
||||
(exact-integer? j)))
|
||||
(error "'random-source-pseudo-randomize!: arguments must be exact integers:" i j))
|
||||
|
||||
; precompute A^(2^127) and A^(2^76) only once
|
||||
|
||||
(when (not mrg32k3a-generators)
|
||||
(set! mrg32k3a-generators
|
||||
(list (power-power A 127)
|
||||
(power-power A 76)
|
||||
(power A 16))))
|
||||
|
||||
; compute M = A^(16 + i*2^127 + j*2^76)
|
||||
(let ((M (product
|
||||
(list-ref mrg32k3a-generators 2)
|
||||
(product
|
||||
(power (list-ref mrg32k3a-generators 0)
|
||||
(modulo i (expt 2 28)))
|
||||
(power (list-ref mrg32k3a-generators 1)
|
||||
(modulo j (expt 2 28)))))))
|
||||
(vector
|
||||
(vector-ref M 0)
|
||||
(vector-ref M 3)
|
||||
(vector-ref M 6)
|
||||
(vector-ref M 9)
|
||||
(vector-ref M 12)
|
||||
(vector-ref M 15))))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,55,50,0,0,0,1,0,0,6,0,9,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,56,50,0,0,0,1,0,0,6,0,9,
|
||||
0,14,0,18,0,23,0,28,0,32,0,39,0,42,0,55,0,62,0,69,0,
|
||||
78,0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0,155,
|
||||
0,177,0,179,0,193,0,203,0,209,0,227,0,26,1,36,1,53,1,86,1,
|
||||
|
@ -19,53 +19,53 @@
|
|||
34,158,2,16,34,16,20,2,9,2,2,2,3,2,2,2,4,2,2,2,5,
|
||||
2,2,2,10,2,2,2,7,2,2,2,8,2,2,2,6,2,2,2,11,2,
|
||||
2,2,12,2,2,13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,
|
||||
101,8,31,8,30,8,29,8,28,8,27,27,248,22,177,3,195,249,22,170,3,
|
||||
101,8,31,8,30,8,29,8,28,8,27,27,248,22,178,3,195,249,22,171,3,
|
||||
80,158,37,34,251,22,73,2,17,248,22,88,199,12,249,22,63,2,1,248,22,
|
||||
90,201,27,248,22,177,3,195,249,22,170,3,80,158,37,34,251,22,73,2,17,
|
||||
248,22,88,199,249,22,63,2,1,248,22,90,201,12,27,248,22,65,248,22,177,
|
||||
90,201,27,248,22,178,3,195,249,22,171,3,80,158,37,34,251,22,73,2,17,
|
||||
248,22,88,199,249,22,63,2,1,248,22,90,201,12,27,248,22,65,248,22,178,
|
||||
3,196,28,248,22,71,193,20,15,159,35,34,35,28,248,22,71,248,22,65,194,
|
||||
248,22,64,193,249,22,170,3,80,158,37,34,251,22,73,2,17,248,22,64,199,
|
||||
248,22,64,193,249,22,171,3,80,158,37,34,251,22,73,2,17,248,22,64,199,
|
||||
249,22,63,2,7,248,22,65,201,11,18,100,10,8,31,8,30,8,29,8,28,
|
||||
8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,55,55,49,16,4,11,
|
||||
11,2,19,3,1,7,101,110,118,54,55,55,50,27,248,22,65,248,22,177,3,
|
||||
8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,55,55,56,16,4,11,
|
||||
11,2,19,3,1,7,101,110,118,54,55,55,57,27,248,22,65,248,22,178,3,
|
||||
196,28,248,22,71,193,20,15,159,35,34,35,28,248,22,71,248,22,65,194,248,
|
||||
22,64,193,249,22,170,3,80,158,37,34,250,22,73,2,20,248,22,73,249,22,
|
||||
22,64,193,249,22,171,3,80,158,37,34,250,22,73,2,20,248,22,73,249,22,
|
||||
73,248,22,73,2,21,248,22,64,201,251,22,73,2,17,2,21,2,21,249,22,
|
||||
63,2,9,248,22,65,204,18,100,11,8,31,8,30,8,29,8,28,8,27,16,
|
||||
4,11,11,2,18,3,1,7,101,110,118,54,55,55,52,16,4,11,11,2,19,
|
||||
3,1,7,101,110,118,54,55,55,53,248,22,177,3,193,27,248,22,177,3,194,
|
||||
249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248,22,65,248,22,177,
|
||||
3,196,249,22,170,3,80,158,37,34,28,248,22,51,248,22,171,3,248,22,64,
|
||||
197,27,249,22,2,32,0,89,162,8,36,35,41,9,222,33,39,248,22,177,3,
|
||||
4,11,11,2,18,3,1,7,101,110,118,54,55,56,49,16,4,11,11,2,19,
|
||||
3,1,7,101,110,118,54,55,56,50,248,22,178,3,193,27,248,22,178,3,194,
|
||||
249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248,22,65,248,22,178,
|
||||
3,196,249,22,171,3,80,158,37,34,28,248,22,51,248,22,172,3,248,22,64,
|
||||
197,27,249,22,2,32,0,89,162,8,36,35,41,9,222,33,39,248,22,178,3,
|
||||
248,22,88,199,250,22,73,2,22,248,22,73,249,22,73,248,22,73,248,22,64,
|
||||
203,250,22,74,2,23,249,22,2,22,64,203,248,22,90,205,249,22,63,248,22,
|
||||
64,201,249,22,2,22,88,199,250,22,74,2,20,249,22,2,32,0,89,162,34,
|
||||
35,45,9,222,33,40,248,22,177,3,248,22,64,201,248,22,65,198,27,248,22,
|
||||
177,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248,22,65,
|
||||
248,22,177,3,196,249,22,170,3,80,158,37,34,250,22,74,2,22,249,22,2,
|
||||
32,0,89,162,34,35,45,9,222,33,42,248,22,177,3,248,22,64,201,248,22,
|
||||
65,198,27,248,22,65,248,22,177,3,196,27,248,22,177,3,248,22,64,195,249,
|
||||
22,170,3,80,158,38,34,28,248,22,71,195,250,22,74,2,20,9,248,22,65,
|
||||
35,45,9,222,33,40,248,22,178,3,248,22,64,201,248,22,65,198,27,248,22,
|
||||
178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248,22,65,
|
||||
248,22,178,3,196,249,22,171,3,80,158,37,34,250,22,74,2,22,249,22,2,
|
||||
32,0,89,162,34,35,45,9,222,33,42,248,22,178,3,248,22,64,201,248,22,
|
||||
65,198,27,248,22,65,248,22,178,3,196,27,248,22,178,3,248,22,64,195,249,
|
||||
22,171,3,80,158,38,34,28,248,22,71,195,250,22,74,2,20,9,248,22,65,
|
||||
199,250,22,73,2,4,248,22,73,248,22,64,199,250,22,74,2,3,248,22,65,
|
||||
201,248,22,65,202,27,248,22,65,248,22,177,3,196,27,249,22,1,22,77,249,
|
||||
22,2,22,177,3,248,22,177,3,248,22,64,199,249,22,170,3,80,158,38,34,
|
||||
201,248,22,65,202,27,248,22,65,248,22,178,3,196,27,249,22,1,22,77,249,
|
||||
22,2,22,178,3,248,22,178,3,248,22,64,199,249,22,171,3,80,158,38,34,
|
||||
251,22,73,1,22,119,105,116,104,45,99,111,110,116,105,110,117,97,116,105,111,
|
||||
110,45,109,97,114,107,2,24,250,22,74,1,23,101,120,116,101,110,100,45,112,
|
||||
97,114,97,109,101,116,101,114,105,122,97,116,105,111,110,21,95,1,27,99,111,
|
||||
110,116,105,110,117,97,116,105,111,110,45,109,97,114,107,45,115,101,116,45,102,
|
||||
105,114,115,116,11,2,24,201,250,22,74,2,20,9,248,22,65,203,27,248,22,
|
||||
65,248,22,177,3,196,28,248,22,71,193,20,15,159,35,34,35,249,22,170,3,
|
||||
80,158,37,34,27,248,22,177,3,248,22,64,197,28,249,22,136,8,62,61,62,
|
||||
248,22,171,3,248,22,88,196,250,22,73,2,20,248,22,73,249,22,73,21,93,
|
||||
65,248,22,178,3,196,28,248,22,71,193,20,15,159,35,34,35,249,22,171,3,
|
||||
80,158,37,34,27,248,22,178,3,248,22,64,197,28,249,22,137,8,62,61,62,
|
||||
248,22,172,3,248,22,88,196,250,22,73,2,20,248,22,73,249,22,73,21,93,
|
||||
2,25,248,22,64,199,250,22,74,2,6,249,22,73,2,25,249,22,73,248,22,
|
||||
97,203,2,25,248,22,65,202,251,22,73,2,17,28,249,22,136,8,248,22,171,
|
||||
97,203,2,25,248,22,65,202,251,22,73,2,17,28,249,22,137,8,248,22,172,
|
||||
3,248,22,64,200,64,101,108,115,101,10,248,22,64,197,250,22,74,2,20,9,
|
||||
248,22,65,200,249,22,63,2,6,248,22,65,202,99,8,31,8,30,8,29,8,
|
||||
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,55,57,55,16,4,
|
||||
11,11,2,19,3,1,7,101,110,118,54,55,57,56,18,158,94,10,64,118,111,
|
||||
105,100,8,47,27,248,22,65,248,22,177,3,196,249,22,170,3,80,158,37,34,
|
||||
28,248,22,51,248,22,171,3,248,22,64,197,250,22,73,2,26,248,22,73,248,
|
||||
22,64,199,248,22,88,198,27,248,22,171,3,248,22,64,197,250,22,73,2,26,
|
||||
28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,54,56,48,52,16,4,
|
||||
11,11,2,19,3,1,7,101,110,118,54,56,48,53,18,158,94,10,64,118,111,
|
||||
105,100,8,47,27,248,22,65,248,22,178,3,196,249,22,171,3,80,158,37,34,
|
||||
28,248,22,51,248,22,172,3,248,22,64,197,250,22,73,2,26,248,22,73,248,
|
||||
22,64,199,248,22,88,198,27,248,22,172,3,248,22,64,197,250,22,73,2,26,
|
||||
248,22,73,248,22,64,197,250,22,74,2,23,248,22,65,199,248,22,65,202,159,
|
||||
34,20,102,159,34,16,1,20,24,2,1,16,0,83,158,40,20,99,131,69,35,
|
||||
37,109,105,110,45,115,116,120,2,2,10,11,10,10,10,10,34,80,158,34,34,
|
||||
|
@ -95,7 +95,7 @@
|
|||
EVAL_ONE_SIZED_STR((char *)expr, 1943);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,55,61,0,0,0,1,0,0,3,0,16,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,56,61,0,0,0,1,0,0,3,0,16,
|
||||
0,21,0,38,0,53,0,71,0,87,0,97,0,115,0,135,0,151,0,169,0,
|
||||
200,0,229,0,251,0,9,1,15,1,29,1,34,1,44,1,52,1,80,1,112,
|
||||
1,157,1,202,1,226,1,9,2,11,2,20,2,71,2,87,3,96,3,126,3,
|
||||
|
@ -128,134 +128,134 @@
|
|||
97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116,111,
|
||||
32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,68,35,37,107,101,
|
||||
114,110,101,108,27,20,14,159,80,158,35,49,250,80,158,38,50,249,22,27,11,
|
||||
80,158,40,49,22,136,12,10,248,22,185,4,195,28,248,22,163,5,193,12,87,
|
||||
94,248,22,139,8,193,248,80,159,36,53,35,195,28,248,22,71,194,9,27,248,
|
||||
22,64,195,27,28,248,22,181,12,194,193,28,248,22,180,12,194,249,22,182,12,
|
||||
195,250,80,158,41,47,248,22,132,13,2,20,11,10,250,80,158,39,47,248,22,
|
||||
132,13,2,20,196,10,28,192,249,22,63,248,22,184,12,249,22,182,12,197,247,
|
||||
22,133,13,27,248,22,65,199,28,248,22,71,193,9,27,248,22,64,194,27,28,
|
||||
248,22,181,12,194,193,28,248,22,180,12,194,249,22,182,12,195,250,80,158,46,
|
||||
47,248,22,132,13,2,20,11,10,250,80,158,44,47,248,22,132,13,2,20,196,
|
||||
10,28,192,249,22,63,248,22,184,12,249,22,182,12,197,247,22,133,13,248,80,
|
||||
80,158,40,49,22,137,12,10,248,22,186,4,195,28,248,22,164,5,193,12,87,
|
||||
94,248,22,140,8,193,248,80,159,36,53,35,195,28,248,22,71,194,9,27,248,
|
||||
22,64,195,27,28,248,22,182,12,194,193,28,248,22,181,12,194,249,22,183,12,
|
||||
195,250,80,158,41,47,248,22,133,13,2,20,11,10,250,80,158,39,47,248,22,
|
||||
133,13,2,20,196,10,28,192,249,22,63,248,22,185,12,249,22,183,12,197,247,
|
||||
22,134,13,27,248,22,65,199,28,248,22,71,193,9,27,248,22,64,194,27,28,
|
||||
248,22,182,12,194,193,28,248,22,181,12,194,249,22,183,12,195,250,80,158,46,
|
||||
47,248,22,133,13,2,20,11,10,250,80,158,44,47,248,22,133,13,2,20,196,
|
||||
10,28,192,249,22,63,248,22,185,12,249,22,183,12,197,247,22,134,13,248,80,
|
||||
159,44,52,35,248,22,65,198,248,80,159,42,52,35,248,22,65,196,27,248,22,
|
||||
65,197,28,248,22,71,193,9,27,248,22,64,194,27,28,248,22,181,12,194,193,
|
||||
28,248,22,180,12,194,249,22,182,12,195,250,80,158,44,47,248,22,132,13,2,
|
||||
20,11,10,250,80,158,42,47,248,22,132,13,2,20,196,10,28,192,249,22,63,
|
||||
248,22,184,12,249,22,182,12,197,247,22,133,13,248,80,159,42,52,35,248,22,
|
||||
65,197,28,248,22,71,193,9,27,248,22,64,194,27,28,248,22,182,12,194,193,
|
||||
28,248,22,181,12,194,249,22,183,12,195,250,80,158,44,47,248,22,133,13,2,
|
||||
20,11,10,250,80,158,42,47,248,22,133,13,2,20,196,10,28,192,249,22,63,
|
||||
248,22,185,12,249,22,183,12,197,247,22,134,13,248,80,159,42,52,35,248,22,
|
||||
65,198,248,80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,195,
|
||||
27,248,22,157,12,194,28,192,192,28,248,22,132,6,194,27,248,22,179,12,195,
|
||||
28,192,192,248,22,180,12,195,11,87,94,28,28,248,22,158,12,194,10,27,248,
|
||||
22,157,12,195,28,192,192,28,248,22,132,6,195,27,248,22,179,12,196,28,192,
|
||||
192,248,22,180,12,196,11,12,250,22,166,8,76,110,111,114,109,97,108,45,112,
|
||||
27,248,22,158,12,194,28,192,192,28,248,22,133,6,194,27,248,22,180,12,195,
|
||||
28,192,192,248,22,181,12,195,11,87,94,28,28,248,22,159,12,194,10,27,248,
|
||||
22,158,12,195,28,192,192,28,248,22,133,6,195,27,248,22,180,12,196,28,192,
|
||||
192,248,22,181,12,196,11,12,250,22,167,8,76,110,111,114,109,97,108,45,112,
|
||||
97,116,104,45,99,97,115,101,6,42,42,112,97,116,104,32,40,102,111,114,32,
|
||||
97,110,121,32,115,121,115,116,101,109,41,32,111,114,32,118,97,108,105,100,45,
|
||||
112,97,116,104,32,115,116,114,105,110,103,196,28,28,248,22,158,12,194,249,22,
|
||||
136,8,248,22,159,12,196,2,21,249,22,136,8,247,22,151,7,2,21,27,28,
|
||||
248,22,132,6,195,194,248,22,141,7,248,22,162,12,196,28,249,22,145,13,0,
|
||||
112,97,116,104,32,115,116,114,105,110,103,196,28,28,248,22,159,12,194,249,22,
|
||||
137,8,248,22,160,12,196,2,21,249,22,137,8,247,22,152,7,2,21,27,28,
|
||||
248,22,133,6,195,194,248,22,142,7,248,22,163,12,196,28,249,22,146,13,0,
|
||||
21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,92,93,
|
||||
34,194,28,248,22,132,6,195,248,22,165,12,195,194,27,248,22,171,6,194,249,
|
||||
22,166,12,248,22,144,7,250,22,151,13,0,6,35,114,120,34,47,34,28,249,
|
||||
22,145,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,
|
||||
92,92,93,42,36,34,200,198,250,22,151,13,0,19,35,114,120,34,91,32,46,
|
||||
34,194,28,248,22,133,6,195,248,22,166,12,195,194,27,248,22,172,6,194,249,
|
||||
22,167,12,248,22,145,7,250,22,152,13,0,6,35,114,120,34,47,34,28,249,
|
||||
22,146,13,0,22,35,114,120,34,91,47,92,92,93,91,46,32,93,43,91,47,
|
||||
92,92,93,42,36,34,200,198,250,22,152,13,0,19,35,114,120,34,91,32,46,
|
||||
93,43,40,91,47,92,92,93,42,41,36,34,201,6,2,2,92,49,80,158,42,
|
||||
35,2,21,28,248,22,132,6,194,248,22,165,12,194,193,87,94,28,27,248,22,
|
||||
157,12,195,28,192,192,28,248,22,132,6,195,27,248,22,179,12,196,28,192,192,
|
||||
248,22,180,12,196,11,12,250,22,166,8,195,2,22,196,28,248,22,179,12,194,
|
||||
12,248,22,181,10,249,22,190,9,248,22,161,6,250,22,180,6,2,23,199,200,
|
||||
247,22,23,87,94,28,27,248,22,157,12,195,28,192,192,28,248,22,132,6,195,
|
||||
27,248,22,179,12,196,28,192,192,248,22,180,12,196,11,12,250,22,166,8,195,
|
||||
2,22,196,28,248,22,179,12,194,12,248,22,181,10,249,22,190,9,248,22,161,
|
||||
6,250,22,180,6,2,23,199,200,247,22,23,87,94,87,94,28,27,248,22,157,
|
||||
12,195,28,192,192,28,248,22,132,6,195,27,248,22,179,12,196,28,192,192,248,
|
||||
22,180,12,196,11,12,250,22,166,8,195,2,22,196,28,248,22,179,12,194,12,
|
||||
248,22,181,10,249,22,190,9,248,22,161,6,250,22,180,6,2,23,199,200,247,
|
||||
22,23,249,22,3,89,162,34,35,48,9,223,2,33,36,196,248,22,181,10,249,
|
||||
22,156,10,195,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195,249,
|
||||
35,2,21,28,248,22,133,6,194,248,22,166,12,194,193,87,94,28,27,248,22,
|
||||
158,12,195,28,192,192,28,248,22,133,6,195,27,248,22,180,12,196,28,192,192,
|
||||
248,22,181,12,196,11,12,250,22,167,8,195,2,22,196,28,248,22,180,12,194,
|
||||
12,248,22,182,10,249,22,191,9,248,22,162,6,250,22,181,6,2,23,199,200,
|
||||
247,22,23,87,94,28,27,248,22,158,12,195,28,192,192,28,248,22,133,6,195,
|
||||
27,248,22,180,12,196,28,192,192,248,22,181,12,196,11,12,250,22,167,8,195,
|
||||
2,22,196,28,248,22,180,12,194,12,248,22,182,10,249,22,191,9,248,22,162,
|
||||
6,250,22,181,6,2,23,199,200,247,22,23,87,94,87,94,28,27,248,22,158,
|
||||
12,195,28,192,192,28,248,22,133,6,195,27,248,22,180,12,196,28,192,192,248,
|
||||
22,181,12,196,11,12,250,22,167,8,195,2,22,196,28,248,22,180,12,194,12,
|
||||
248,22,182,10,249,22,191,9,248,22,162,6,250,22,181,6,2,23,199,200,247,
|
||||
22,23,249,22,3,89,162,34,35,48,9,223,2,33,36,196,248,22,182,10,249,
|
||||
22,157,10,195,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195,249,
|
||||
22,3,80,159,36,51,35,196,251,80,159,38,40,35,2,7,32,0,89,162,34,
|
||||
35,43,9,222,33,38,197,198,32,40,89,162,34,40,57,65,99,108,111,111,112,
|
||||
222,33,41,28,248,22,71,198,248,195,251,22,180,6,2,24,198,28,248,22,71,
|
||||
202,200,250,22,1,22,175,12,203,204,197,27,249,22,175,12,248,22,64,201,198,
|
||||
28,248,22,170,12,193,27,250,22,1,22,175,12,196,201,28,248,22,170,12,193,
|
||||
192,27,248,22,65,201,28,248,22,71,193,248,198,251,22,180,6,2,24,201,28,
|
||||
248,22,71,205,203,250,22,1,22,175,12,206,23,15,200,27,249,22,175,12,248,
|
||||
22,64,196,201,28,248,22,170,12,193,27,250,22,1,22,175,12,196,204,28,248,
|
||||
22,170,12,193,192,253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,40,
|
||||
222,33,41,28,248,22,71,198,248,195,251,22,181,6,2,24,198,28,248,22,71,
|
||||
202,200,250,22,1,22,176,12,203,204,197,27,249,22,176,12,248,22,64,201,198,
|
||||
28,248,22,171,12,193,27,250,22,1,22,176,12,196,201,28,248,22,171,12,193,
|
||||
192,27,248,22,65,201,28,248,22,71,193,248,198,251,22,181,6,2,24,201,28,
|
||||
248,22,71,205,203,250,22,1,22,176,12,206,23,15,200,27,249,22,176,12,248,
|
||||
22,64,196,201,28,248,22,171,12,193,27,250,22,1,22,176,12,196,204,28,248,
|
||||
22,171,12,193,192,253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,40,
|
||||
202,203,204,205,206,248,22,65,200,27,248,22,65,200,28,248,22,71,193,248,197,
|
||||
251,22,180,6,2,24,200,28,248,22,71,204,202,250,22,1,22,175,12,205,206,
|
||||
199,27,249,22,175,12,248,22,64,196,200,28,248,22,170,12,193,27,250,22,1,
|
||||
22,175,12,196,203,28,248,22,170,12,193,192,253,2,40,202,203,204,205,206,248,
|
||||
22,65,201,253,2,40,201,202,203,204,205,248,22,65,200,27,247,22,134,13,253,
|
||||
2,40,198,199,200,201,202,198,87,95,28,28,248,22,158,12,193,10,27,248,22,
|
||||
157,12,194,28,192,192,28,248,22,132,6,194,27,248,22,179,12,195,28,192,192,
|
||||
248,22,180,12,195,11,12,252,22,166,8,199,2,25,34,197,198,28,28,248,22,
|
||||
132,6,194,10,248,22,184,6,194,12,252,22,166,8,199,2,26,35,197,198,91,
|
||||
159,37,11,90,161,37,34,11,248,22,178,12,196,87,94,28,192,12,250,22,167,
|
||||
251,22,181,6,2,24,200,28,248,22,71,204,202,250,22,1,22,176,12,205,206,
|
||||
199,27,249,22,176,12,248,22,64,196,200,28,248,22,171,12,193,27,250,22,1,
|
||||
22,176,12,196,203,28,248,22,171,12,193,192,253,2,40,202,203,204,205,206,248,
|
||||
22,65,201,253,2,40,201,202,203,204,205,248,22,65,200,27,247,22,135,13,253,
|
||||
2,40,198,199,200,201,202,198,87,95,28,28,248,22,159,12,193,10,27,248,22,
|
||||
158,12,194,28,192,192,28,248,22,133,6,194,27,248,22,180,12,195,28,192,192,
|
||||
248,22,181,12,195,11,12,252,22,167,8,199,2,25,34,197,198,28,28,248,22,
|
||||
133,6,194,10,248,22,185,6,194,12,252,22,167,8,199,2,26,35,197,198,91,
|
||||
159,37,11,90,161,37,34,11,248,22,179,12,196,87,94,28,192,12,250,22,168,
|
||||
8,200,2,27,198,249,22,7,194,195,91,159,36,11,90,161,36,34,11,87,95,
|
||||
28,28,248,22,158,12,195,10,27,248,22,157,12,196,28,192,192,28,248,22,132,
|
||||
6,196,27,248,22,179,12,197,28,192,192,248,22,180,12,197,11,12,252,22,166,
|
||||
8,2,10,2,25,34,199,200,28,28,248,22,132,6,196,10,248,22,184,6,196,
|
||||
12,252,22,166,8,2,10,2,26,35,199,200,91,159,37,11,90,161,37,34,11,
|
||||
248,22,178,12,198,87,94,28,192,12,250,22,167,8,2,10,2,27,200,249,22,
|
||||
7,194,195,27,249,22,167,12,250,22,150,13,0,18,35,114,120,35,34,40,91,
|
||||
46,93,91,94,46,93,42,124,41,36,34,248,22,163,12,200,28,248,22,132,6,
|
||||
202,249,22,144,7,203,8,63,201,28,248,22,158,12,198,248,22,159,12,198,247,
|
||||
22,160,12,28,248,22,157,12,194,249,22,175,12,195,194,192,91,159,36,11,90,
|
||||
161,36,34,11,87,95,28,28,248,22,158,12,195,10,27,248,22,157,12,196,28,
|
||||
192,192,28,248,22,132,6,196,27,248,22,179,12,197,28,192,192,248,22,180,12,
|
||||
197,11,12,252,22,166,8,2,11,2,25,34,199,200,28,28,248,22,132,6,196,
|
||||
10,248,22,184,6,196,12,252,22,166,8,2,11,2,26,35,199,200,91,159,37,
|
||||
11,90,161,37,34,11,248,22,178,12,198,87,94,28,192,12,250,22,167,8,2,
|
||||
11,2,27,200,249,22,7,194,195,27,249,22,167,12,249,22,130,7,250,22,151,
|
||||
13,0,9,35,114,120,35,34,91,46,93,34,248,22,163,12,202,6,1,1,95,
|
||||
28,248,22,132,6,201,249,22,144,7,202,8,63,200,28,248,22,158,12,198,248,
|
||||
22,159,12,198,247,22,160,12,28,248,22,157,12,194,249,22,175,12,195,194,192,
|
||||
249,247,22,183,5,194,11,248,80,158,35,45,9,27,247,22,136,13,249,80,158,
|
||||
37,46,28,194,27,248,22,149,7,6,11,11,80,76,84,67,79,76,76,69,67,
|
||||
84,83,28,192,192,6,0,0,6,0,0,27,28,195,250,22,175,12,248,22,132,
|
||||
13,69,97,100,100,111,110,45,100,105,114,247,22,147,7,6,8,8,99,111,108,
|
||||
28,28,248,22,159,12,195,10,27,248,22,158,12,196,28,192,192,28,248,22,133,
|
||||
6,196,27,248,22,180,12,197,28,192,192,248,22,181,12,197,11,12,252,22,167,
|
||||
8,2,10,2,25,34,199,200,28,28,248,22,133,6,196,10,248,22,185,6,196,
|
||||
12,252,22,167,8,2,10,2,26,35,199,200,91,159,37,11,90,161,37,34,11,
|
||||
248,22,179,12,198,87,94,28,192,12,250,22,168,8,2,10,2,27,200,249,22,
|
||||
7,194,195,27,249,22,168,12,250,22,151,13,0,18,35,114,120,35,34,40,91,
|
||||
46,93,91,94,46,93,42,124,41,36,34,248,22,164,12,200,28,248,22,133,6,
|
||||
202,249,22,145,7,203,8,63,201,28,248,22,159,12,198,248,22,160,12,198,247,
|
||||
22,161,12,28,248,22,158,12,194,249,22,176,12,195,194,192,91,159,36,11,90,
|
||||
161,36,34,11,87,95,28,28,248,22,159,12,195,10,27,248,22,158,12,196,28,
|
||||
192,192,28,248,22,133,6,196,27,248,22,180,12,197,28,192,192,248,22,181,12,
|
||||
197,11,12,252,22,167,8,2,11,2,25,34,199,200,28,28,248,22,133,6,196,
|
||||
10,248,22,185,6,196,12,252,22,167,8,2,11,2,26,35,199,200,91,159,37,
|
||||
11,90,161,37,34,11,248,22,179,12,198,87,94,28,192,12,250,22,168,8,2,
|
||||
11,2,27,200,249,22,7,194,195,27,249,22,168,12,249,22,131,7,250,22,152,
|
||||
13,0,9,35,114,120,35,34,91,46,93,34,248,22,164,12,202,6,1,1,95,
|
||||
28,248,22,133,6,201,249,22,145,7,202,8,63,200,28,248,22,159,12,198,248,
|
||||
22,160,12,198,247,22,161,12,28,248,22,158,12,194,249,22,176,12,195,194,192,
|
||||
249,247,22,184,5,194,11,248,80,158,35,45,9,27,247,22,137,13,249,80,158,
|
||||
37,46,28,194,27,248,22,150,7,6,11,11,80,76,84,67,79,76,76,69,67,
|
||||
84,83,28,192,192,6,0,0,6,0,0,27,28,195,250,22,176,12,248,22,133,
|
||||
13,69,97,100,100,111,110,45,100,105,114,247,22,148,7,6,8,8,99,111,108,
|
||||
108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,201,248,22,73,248,
|
||||
22,132,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,193,249,22,63,
|
||||
195,194,192,32,49,89,162,34,37,49,2,19,222,33,50,27,249,22,143,13,196,
|
||||
22,133,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,193,249,22,63,
|
||||
195,194,192,32,49,89,162,34,37,49,2,19,222,33,50,27,249,22,144,13,196,
|
||||
197,28,192,27,248,22,88,194,27,250,2,49,198,199,248,22,97,198,28,249,22,
|
||||
190,6,195,2,28,249,22,77,197,194,249,22,63,248,22,166,12,196,194,28,249,
|
||||
22,190,6,197,2,28,249,22,77,195,9,249,22,63,248,22,166,12,198,9,87,
|
||||
95,28,28,248,22,184,6,194,10,248,22,132,6,194,12,250,22,166,8,2,14,
|
||||
191,6,195,2,28,249,22,77,197,194,249,22,63,248,22,167,12,196,194,28,249,
|
||||
22,191,6,197,2,28,249,22,77,195,9,249,22,63,248,22,167,12,198,9,87,
|
||||
95,28,28,248,22,185,6,194,10,248,22,133,6,194,12,250,22,167,8,2,14,
|
||||
6,21,21,98,121,116,101,32,115,116,114,105,110,103,32,111,114,32,115,116,114,
|
||||
105,110,103,196,28,28,248,22,72,195,249,22,4,22,157,12,196,11,12,250,22,
|
||||
166,8,2,14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,
|
||||
250,2,49,197,195,28,248,22,132,6,197,248,22,143,7,197,196,32,52,89,162,
|
||||
105,110,103,196,28,28,248,22,72,195,249,22,4,22,158,12,196,11,12,250,22,
|
||||
167,8,2,14,6,13,13,108,105,115,116,32,111,102,32,112,97,116,104,115,197,
|
||||
250,2,49,197,195,28,248,22,133,6,197,248,22,144,7,197,196,32,52,89,162,
|
||||
8,36,38,56,2,19,222,33,55,32,53,89,162,8,36,37,53,70,102,111,117,
|
||||
110,100,45,101,120,101,99,222,33,54,28,192,91,159,37,11,90,161,37,34,11,
|
||||
248,22,178,12,198,27,28,197,27,248,22,183,12,200,28,249,22,138,8,194,201,
|
||||
11,28,248,22,179,12,193,250,2,53,200,201,249,22,175,12,199,197,250,2,53,
|
||||
200,201,195,11,28,192,192,27,28,248,22,157,12,195,27,249,22,175,12,197,200,
|
||||
28,28,248,22,170,12,193,10,248,22,169,12,193,192,11,11,28,192,192,28,198,
|
||||
11,27,248,22,183,12,201,28,249,22,138,8,194,202,11,28,248,22,179,12,193,
|
||||
250,2,53,201,202,249,22,175,12,200,197,250,2,53,201,202,195,194,28,248,22,
|
||||
71,196,11,27,248,22,182,12,248,22,64,198,27,249,22,175,12,195,196,28,248,
|
||||
22,169,12,193,250,2,53,198,199,195,27,248,22,65,199,28,248,22,71,193,11,
|
||||
27,248,22,182,12,248,22,64,195,27,249,22,175,12,195,199,28,248,22,169,12,
|
||||
248,22,179,12,198,27,28,197,27,248,22,184,12,200,28,249,22,139,8,194,201,
|
||||
11,28,248,22,180,12,193,250,2,53,200,201,249,22,176,12,199,197,250,2,53,
|
||||
200,201,195,11,28,192,192,27,28,248,22,158,12,195,27,249,22,176,12,197,200,
|
||||
28,28,248,22,171,12,193,10,248,22,170,12,193,192,11,11,28,192,192,28,198,
|
||||
11,27,248,22,184,12,201,28,249,22,139,8,194,202,11,28,248,22,180,12,193,
|
||||
250,2,53,201,202,249,22,176,12,200,197,250,2,53,201,202,195,194,28,248,22,
|
||||
71,196,11,27,248,22,183,12,248,22,64,198,27,249,22,176,12,195,196,28,248,
|
||||
22,170,12,193,250,2,53,198,199,195,27,248,22,65,199,28,248,22,71,193,11,
|
||||
27,248,22,183,12,248,22,64,195,27,249,22,176,12,195,199,28,248,22,170,12,
|
||||
193,250,2,53,201,202,195,27,248,22,65,196,28,248,22,71,193,11,27,248,22,
|
||||
182,12,248,22,64,195,27,249,22,175,12,195,202,28,248,22,169,12,193,250,2,
|
||||
53,204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,157,
|
||||
12,195,28,192,192,28,248,22,132,6,195,27,248,22,179,12,196,28,192,192,248,
|
||||
22,180,12,196,11,12,250,22,166,8,2,15,6,25,25,112,97,116,104,32,111,
|
||||
183,12,248,22,64,195,27,249,22,176,12,195,202,28,248,22,170,12,193,250,2,
|
||||
53,204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,158,
|
||||
12,195,28,192,192,28,248,22,133,6,195,27,248,22,180,12,196,28,192,192,248,
|
||||
22,181,12,196,11,12,250,22,167,8,2,15,6,25,25,112,97,116,104,32,111,
|
||||
114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,196,28,
|
||||
28,194,28,27,248,22,157,12,196,28,192,192,28,248,22,132,6,196,27,248,22,
|
||||
179,12,197,28,192,192,248,22,180,12,197,11,248,22,179,12,195,11,10,12,250,
|
||||
22,166,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,
|
||||
28,194,28,27,248,22,158,12,196,28,192,192,28,248,22,133,6,196,27,248,22,
|
||||
180,12,197,28,192,192,248,22,181,12,197,11,248,22,180,12,195,11,10,12,250,
|
||||
22,167,8,2,15,6,29,29,35,102,32,111,114,32,114,101,108,97,116,105,118,
|
||||
101,32,112,97,116,104,32,111,114,32,115,116,114,105,110,103,197,28,28,248,22,
|
||||
179,12,194,91,159,37,11,90,161,37,34,11,248,22,178,12,197,249,22,136,8,
|
||||
194,68,114,101,108,97,116,105,118,101,11,27,248,22,149,7,6,4,4,80,65,
|
||||
180,12,194,91,159,37,11,90,161,37,34,11,248,22,179,12,197,249,22,137,8,
|
||||
194,68,114,101,108,97,116,105,118,101,11,27,248,22,150,7,6,4,4,80,65,
|
||||
84,72,251,2,52,198,199,200,28,196,27,249,80,158,42,46,199,9,28,249,22,
|
||||
136,8,247,22,151,7,2,21,249,22,63,248,22,166,12,5,1,46,194,192,9,
|
||||
27,248,22,182,12,195,28,248,22,169,12,193,250,2,53,198,199,195,11,250,80,
|
||||
158,37,47,196,197,11,250,80,158,37,47,196,11,11,87,94,249,22,188,5,247,
|
||||
22,165,4,195,248,22,139,5,249,22,151,3,34,249,22,135,3,197,198,27,248,
|
||||
22,132,13,2,20,27,249,80,158,38,47,195,11,27,27,248,22,154,3,198,28,
|
||||
192,192,34,27,27,248,22,154,3,200,28,192,192,34,27,249,22,182,4,197,89,
|
||||
162,8,36,34,46,9,224,4,3,33,59,27,248,22,169,4,194,87,94,248,22,
|
||||
133,4,21,94,2,17,2,29,248,80,159,41,53,35,193,159,34,20,102,159,34,
|
||||
137,8,247,22,152,7,2,21,249,22,63,248,22,167,12,5,1,46,194,192,9,
|
||||
27,248,22,183,12,195,28,248,22,170,12,193,250,2,53,198,199,195,11,250,80,
|
||||
158,37,47,196,197,11,250,80,158,37,47,196,11,11,87,94,249,22,189,5,247,
|
||||
22,166,4,195,248,22,140,5,249,22,151,3,34,249,22,135,3,197,198,27,248,
|
||||
22,133,13,2,20,27,249,80,158,38,47,195,11,27,27,248,22,154,3,198,28,
|
||||
192,192,34,27,27,248,22,154,3,200,28,192,192,34,27,249,22,183,4,197,89,
|
||||
162,8,36,34,46,9,224,4,3,33,59,27,248,22,170,4,194,87,94,248,22,
|
||||
134,4,21,94,2,17,2,29,248,80,159,41,53,35,193,159,34,20,102,159,34,
|
||||
16,1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99,131,67,35,37,
|
||||
117,116,105,108,115,2,1,11,10,10,10,10,10,41,80,158,34,34,20,102,159,
|
||||
37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2,1,2,4,193,
|
||||
|
@ -274,7 +274,7 @@
|
|||
34,16,2,89,162,34,35,54,2,19,223,0,33,31,80,159,34,52,35,83,158,
|
||||
34,16,2,89,162,8,36,35,43,9,223,0,33,32,80,159,34,51,35,83,158,
|
||||
34,16,2,32,0,89,162,34,35,43,2,2,222,33,33,80,159,34,34,35,83,
|
||||
158,34,16,2,249,22,134,6,7,92,7,92,80,159,34,35,35,83,158,34,16,
|
||||
158,34,16,2,249,22,135,6,7,92,7,92,80,159,34,35,35,83,158,34,16,
|
||||
2,89,162,34,35,52,2,4,223,0,33,34,80,159,34,36,35,83,158,34,16,
|
||||
2,32,0,89,162,34,36,48,2,5,222,33,35,80,159,34,37,35,83,158,34,
|
||||
16,2,32,0,89,162,34,37,49,2,6,222,33,37,80,159,34,38,35,83,158,
|
||||
|
@ -286,8 +286,8 @@
|
|||
34,43,35,83,158,34,16,2,32,0,89,162,34,35,42,2,12,222,33,46,80,
|
||||
159,34,44,35,83,158,34,16,2,83,158,37,20,96,95,2,13,89,162,34,34,
|
||||
41,9,223,0,33,47,89,162,34,35,51,9,223,0,33,48,80,159,34,45,35,
|
||||
83,158,34,16,2,27,248,22,139,13,248,22,143,7,27,28,249,22,136,8,247,
|
||||
22,151,7,2,21,6,1,1,59,6,1,1,58,250,22,180,6,6,14,14,40,
|
||||
83,158,34,16,2,27,248,22,140,13,248,22,144,7,27,28,249,22,137,8,247,
|
||||
22,152,7,2,21,6,1,1,59,6,1,1,58,250,22,181,6,6,14,14,40,
|
||||
91,94,126,97,93,42,41,126,97,40,46,42,41,195,195,89,162,34,36,46,2,
|
||||
14,223,0,33,51,80,159,34,46,35,83,158,34,16,2,83,158,37,20,96,96,
|
||||
2,15,89,162,8,36,37,52,9,223,0,33,56,89,162,34,36,45,9,223,0,
|
||||
|
@ -298,7 +298,7 @@
|
|||
EVAL_ONE_SIZED_STR((char *)expr, 4179);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,55,7,0,0,0,1,0,0,6,0,19,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,56,7,0,0,0,1,0,0,6,0,19,
|
||||
0,34,0,48,0,62,0,76,0,0,0,245,0,0,0,65,113,117,111,116,101,
|
||||
29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69,35,37,110,
|
||||
101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,109,122,11,
|
||||
|
@ -315,7 +315,7 @@
|
|||
EVAL_ONE_SIZED_STR((char *)expr, 281);
|
||||
}
|
||||
{
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,55,52,0,0,0,1,0,0,3,0,14,
|
||||
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,8,51,46,57,57,46,48,46,56,52,0,0,0,1,0,0,3,0,14,
|
||||
0,41,0,47,0,60,0,74,0,96,0,122,0,134,0,152,0,172,0,184,0,
|
||||
200,0,223,0,3,1,8,1,13,1,18,1,23,1,54,1,58,1,66,1,74,
|
||||
1,82,1,163,1,199,1,216,1,245,1,17,2,47,2,57,2,87,2,97,2,
|
||||
|
@ -337,26 +337,26 @@
|
|||
107,64,108,111,111,112,1,29,115,116,97,110,100,97,114,100,45,109,111,100,117,
|
||||
108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98,67,
|
||||
105,103,110,111,114,101,100,249,22,14,195,80,158,36,44,249,80,159,36,47,35,
|
||||
195,10,27,28,194,28,249,22,136,8,196,80,158,37,45,80,158,35,46,27,248,
|
||||
22,148,4,196,28,248,22,157,12,193,91,159,37,11,90,161,37,34,11,248,22,
|
||||
178,12,196,87,95,83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,39,
|
||||
46,192,192,11,11,28,192,192,27,247,22,184,5,28,192,192,247,22,133,13,20,
|
||||
14,159,80,158,34,38,250,80,158,37,39,249,22,27,11,80,158,39,38,22,184,
|
||||
5,28,248,22,157,12,197,196,247,22,133,13,247,194,250,22,175,12,196,198,249,
|
||||
80,158,41,37,197,5,3,46,122,111,252,22,175,12,198,200,6,6,6,110,97,
|
||||
116,105,118,101,247,22,152,7,249,80,158,43,37,199,80,158,43,34,27,193,27,
|
||||
250,22,128,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,22,
|
||||
63,195,194,11,27,248,194,195,27,250,22,128,13,196,11,32,0,89,162,8,44,
|
||||
34,39,9,222,11,28,192,249,22,63,195,194,11,249,247,22,138,13,248,22,64,
|
||||
195,195,27,248,194,195,27,250,22,128,13,196,11,32,0,89,162,8,44,34,39,
|
||||
9,222,11,28,192,249,22,63,195,194,11,249,247,22,182,5,248,22,64,195,195,
|
||||
249,247,22,182,5,194,195,87,94,28,248,80,158,35,36,194,12,250,22,166,8,
|
||||
195,10,27,28,194,28,249,22,137,8,196,80,158,37,45,80,158,35,46,27,248,
|
||||
22,149,4,196,28,248,22,158,12,193,91,159,37,11,90,161,37,34,11,248,22,
|
||||
179,12,196,87,95,83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,39,
|
||||
46,192,192,11,11,28,192,192,27,247,22,185,5,28,192,192,247,22,134,13,20,
|
||||
14,159,80,158,34,38,250,80,158,37,39,249,22,27,11,80,158,39,38,22,185,
|
||||
5,28,248,22,158,12,197,196,247,22,134,13,247,194,250,22,176,12,196,198,249,
|
||||
80,158,41,37,197,5,3,46,122,111,252,22,176,12,198,200,6,6,6,110,97,
|
||||
116,105,118,101,247,22,153,7,249,80,158,43,37,199,80,158,43,34,27,193,27,
|
||||
250,22,129,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249,22,
|
||||
63,195,194,11,27,248,194,195,27,250,22,129,13,196,11,32,0,89,162,8,44,
|
||||
34,39,9,222,11,28,192,249,22,63,195,194,11,249,247,22,139,13,248,22,64,
|
||||
195,195,27,248,194,195,27,250,22,129,13,196,11,32,0,89,162,8,44,34,39,
|
||||
9,222,11,28,192,249,22,63,195,194,11,249,247,22,183,5,248,22,64,195,195,
|
||||
249,247,22,183,5,194,195,87,94,28,248,80,158,35,36,194,12,250,22,167,8,
|
||||
77,108,111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,
|
||||
112,97,116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,
|
||||
114,105,110,103,196,91,159,40,11,90,161,35,34,11,28,248,22,181,12,200,199,
|
||||
27,247,22,184,5,28,192,249,22,182,12,202,194,200,90,161,37,35,11,248,22,
|
||||
178,12,193,90,161,35,38,11,28,249,22,136,8,195,68,114,101,108,97,116,105,
|
||||
118,101,2,17,193,90,161,35,39,11,247,22,135,13,27,89,162,34,35,48,62,
|
||||
114,105,110,103,196,91,159,40,11,90,161,35,34,11,28,248,22,182,12,200,199,
|
||||
27,247,22,185,5,28,192,249,22,183,12,202,194,200,90,161,37,35,11,248,22,
|
||||
179,12,193,90,161,35,38,11,28,249,22,137,8,195,68,114,101,108,97,116,105,
|
||||
118,101,2,17,193,90,161,35,39,11,247,22,136,13,27,89,162,34,35,48,62,
|
||||
122,111,225,7,5,3,33,27,27,89,162,34,35,50,9,225,8,6,4,33,28,
|
||||
27,249,22,5,89,162,34,35,46,9,223,5,33,29,202,27,28,194,27,249,22,
|
||||
5,89,162,34,35,46,9,223,5,33,30,204,27,28,195,11,193,28,192,192,28,
|
||||
|
@ -367,9 +367,9 @@
|
|||
193,11,11,11,11,28,192,249,80,159,47,53,35,203,89,162,34,34,44,9,224,
|
||||
15,2,33,33,249,80,159,47,53,35,203,89,162,34,34,43,9,224,15,7,33,
|
||||
34,32,36,89,162,34,35,53,2,19,222,33,38,0,17,35,114,120,34,94,40,
|
||||
46,42,63,41,47,40,46,42,41,36,34,27,249,22,143,13,2,37,195,28,192,
|
||||
249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,143,13,2,37,195,28,
|
||||
192,249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,143,13,2,37,195,
|
||||
46,42,63,41,47,40,46,42,41,36,34,27,249,22,144,13,2,37,195,28,192,
|
||||
249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,144,13,2,37,195,28,
|
||||
192,249,22,63,248,22,88,195,27,248,22,97,196,27,249,22,144,13,2,37,195,
|
||||
28,192,249,22,63,248,22,88,195,248,2,36,248,22,97,196,248,22,73,194,248,
|
||||
22,73,194,248,22,73,194,32,39,89,162,34,35,53,2,19,222,33,40,28,248,
|
||||
22,71,248,22,65,194,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,
|
||||
|
@ -378,80 +378,80 @@
|
|||
22,65,194,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,34,11,248,
|
||||
2,39,248,22,65,196,249,22,7,249,22,63,248,22,64,199,196,195,249,22,7,
|
||||
249,22,63,248,22,64,199,196,195,249,22,7,249,22,63,248,22,64,199,196,195,
|
||||
27,248,2,36,194,28,194,192,248,2,39,193,87,95,28,248,22,146,4,195,12,
|
||||
250,22,166,8,2,20,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,
|
||||
27,248,2,36,194,28,194,192,248,2,39,193,87,95,28,248,22,147,4,195,12,
|
||||
250,22,167,8,2,20,6,20,20,114,101,115,111,108,118,101,100,45,109,111,100,
|
||||
117,108,101,45,112,97,116,104,197,28,207,248,208,195,12,27,27,250,22,126,80,
|
||||
158,40,41,248,22,161,13,247,22,145,11,11,28,192,192,27,247,22,120,87,94,
|
||||
250,22,125,80,158,41,41,248,22,161,13,247,22,145,11,195,192,250,22,125,195,
|
||||
198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,165,8,11,
|
||||
196,195,248,22,163,8,194,28,249,22,138,6,194,6,1,1,46,2,17,28,249,
|
||||
22,138,6,194,6,2,2,46,46,62,117,112,192,28,249,22,138,8,248,22,65,
|
||||
199,196,28,249,22,136,8,248,22,64,199,195,251,22,163,8,2,20,6,26,26,
|
||||
158,40,41,248,22,162,13,247,22,146,11,11,28,192,192,27,247,22,120,87,94,
|
||||
250,22,125,80,158,41,41,248,22,162,13,247,22,146,11,195,192,250,22,125,195,
|
||||
198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,192,250,22,166,8,11,
|
||||
196,195,248,22,164,8,194,28,249,22,139,6,194,6,1,1,46,2,17,28,249,
|
||||
22,139,6,194,6,2,2,46,46,62,117,112,192,28,249,22,139,8,248,22,65,
|
||||
199,196,28,249,22,137,8,248,22,64,199,195,251,22,164,8,2,20,6,26,26,
|
||||
99,121,99,108,101,32,105,110,32,108,111,97,100,105,110,103,32,97,116,32,126,
|
||||
101,58,32,126,101,199,249,22,2,22,65,248,22,78,249,22,63,205,201,12,12,
|
||||
247,192,20,14,159,80,158,38,43,249,22,63,247,22,145,11,196,20,14,159,80,
|
||||
158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,130,4,195,249,
|
||||
247,22,183,5,197,248,22,52,248,22,161,12,197,87,94,28,28,248,22,157,12,
|
||||
196,10,248,22,151,4,196,12,28,197,250,22,165,8,11,6,15,15,98,97,100,
|
||||
32,109,111,100,117,108,101,32,112,97,116,104,200,250,22,166,8,2,20,6,19,
|
||||
247,192,20,14,159,80,158,38,43,249,22,63,247,22,146,11,196,20,14,159,80,
|
||||
158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,195,249,
|
||||
247,22,184,5,197,248,22,52,248,22,162,12,197,87,94,28,28,248,22,158,12,
|
||||
196,10,248,22,152,4,196,12,28,197,250,22,166,8,11,6,15,15,98,97,100,
|
||||
32,109,111,100,117,108,101,32,112,97,116,104,200,250,22,167,8,2,20,6,19,
|
||||
19,109,111,100,117,108,101,45,112,97,116,104,32,111,114,32,112,97,116,104,198,
|
||||
28,28,248,22,61,196,249,22,136,8,248,22,64,198,2,4,11,248,22,147,4,
|
||||
248,22,88,197,28,28,248,22,61,196,249,22,136,8,248,22,64,198,66,112,108,
|
||||
28,28,248,22,61,196,249,22,137,8,248,22,64,198,2,4,11,248,22,148,4,
|
||||
248,22,88,197,28,28,248,22,61,196,249,22,137,8,248,22,64,198,66,112,108,
|
||||
97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38,250,80,158,39,
|
||||
39,249,22,27,11,80,158,41,38,22,145,11,196,90,161,35,34,10,249,22,131,
|
||||
39,249,22,27,11,80,158,41,38,22,146,11,196,90,161,35,34,10,249,22,132,
|
||||
4,21,94,2,21,6,18,18,112,108,97,110,101,116,47,114,101,115,111,108,118,
|
||||
101,114,46,115,115,1,27,112,108,97,110,101,116,45,109,111,100,117,108,101,45,
|
||||
110,97,109,101,45,114,101,115,111,108,118,101,114,12,251,211,199,200,201,202,27,
|
||||
89,162,34,35,44,79,115,104,111,119,45,99,111,108,108,101,99,116,105,111,110,
|
||||
45,101,114,114,223,6,33,44,27,28,248,22,51,198,27,250,22,126,80,158,42,
|
||||
42,249,22,63,203,247,22,134,13,11,28,192,192,91,159,36,11,90,161,36,34,
|
||||
42,249,22,63,203,247,22,135,13,11,28,192,192,91,159,36,11,90,161,36,34,
|
||||
11,249,80,159,43,47,35,248,22,54,203,11,27,251,80,158,46,49,2,20,201,
|
||||
28,248,22,71,198,198,248,22,64,198,28,248,22,71,198,9,248,22,65,198,249,
|
||||
22,175,12,194,28,248,22,71,196,6,7,7,109,97,105,110,46,115,115,249,22,
|
||||
155,6,198,6,3,3,46,115,115,28,248,22,132,6,198,27,248,80,159,40,54,
|
||||
22,176,12,194,28,248,22,71,196,6,7,7,109,97,105,110,46,115,115,249,22,
|
||||
156,6,198,6,3,3,46,115,115,28,248,22,133,6,198,27,248,80,159,40,54,
|
||||
35,200,27,250,22,126,80,158,43,42,249,22,63,204,198,11,28,192,192,91,159,
|
||||
36,11,90,161,36,34,11,249,80,159,44,47,35,203,11,250,22,1,22,175,12,
|
||||
36,11,90,161,36,34,11,249,80,159,44,47,35,203,11,250,22,1,22,176,12,
|
||||
198,249,22,77,249,22,2,32,0,89,162,8,36,35,42,9,222,33,45,199,248,
|
||||
22,73,199,28,248,22,157,12,198,28,248,22,180,12,198,197,248,22,73,6,26,
|
||||
22,73,199,28,248,22,158,12,198,28,248,22,181,12,198,197,248,22,73,6,26,
|
||||
26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97,98,115,
|
||||
111,108,117,116,101,41,28,249,22,136,8,248,22,64,200,2,21,27,250,22,126,
|
||||
80,158,42,42,249,22,63,203,247,22,134,13,11,28,192,192,91,159,37,11,90,
|
||||
111,108,117,116,101,41,28,249,22,137,8,248,22,64,200,2,21,27,250,22,126,
|
||||
80,158,42,42,249,22,63,203,247,22,135,13,11,28,192,192,91,159,37,11,90,
|
||||
161,36,34,11,249,80,159,44,47,35,248,22,88,204,11,90,161,35,36,11,28,
|
||||
248,22,71,248,22,90,203,28,248,22,71,193,249,22,145,13,0,8,35,114,120,
|
||||
248,22,71,248,22,90,203,28,248,22,71,193,249,22,146,13,0,8,35,114,120,
|
||||
34,91,46,93,34,195,11,10,27,27,28,196,249,22,77,28,248,22,71,248,22,
|
||||
90,23,15,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77,249,22,2,
|
||||
80,159,50,55,35,248,22,90,23,18,196,28,248,22,71,195,248,22,73,196,194,
|
||||
251,80,158,48,49,2,20,203,248,22,64,197,248,22,65,197,249,22,175,12,194,
|
||||
251,80,158,48,49,2,20,203,248,22,64,197,248,22,65,197,249,22,176,12,194,
|
||||
28,197,196,28,248,22,71,196,6,7,7,109,97,105,110,46,115,115,28,249,22,
|
||||
145,13,0,8,35,114,120,34,91,46,93,34,198,196,249,22,155,6,198,6,3,
|
||||
3,46,115,115,28,249,22,136,8,248,22,64,200,64,102,105,108,101,249,22,182,
|
||||
12,248,22,88,200,248,80,159,41,54,35,201,12,87,94,28,28,248,22,157,12,
|
||||
193,10,248,22,154,7,193,12,28,199,250,22,165,8,67,114,101,113,117,105,114,
|
||||
101,249,22,180,6,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,
|
||||
116,104,126,97,28,197,248,22,64,198,6,0,0,202,250,22,166,8,2,20,249,
|
||||
22,180,6,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,197,
|
||||
248,22,64,198,6,0,0,200,27,28,248,22,154,7,194,249,22,159,7,195,34,
|
||||
249,22,184,12,248,22,185,12,196,11,27,28,248,22,154,7,195,249,22,159,7,
|
||||
196,35,248,80,158,41,50,194,91,159,37,11,90,161,37,34,11,28,248,22,154,
|
||||
7,198,250,22,7,2,22,249,22,159,7,202,36,2,22,248,22,178,12,197,27,
|
||||
28,248,22,154,7,199,249,22,159,7,200,37,249,80,158,46,51,196,5,0,27,
|
||||
28,248,22,154,7,200,249,22,159,7,201,38,248,22,147,4,199,27,27,250,22,
|
||||
126,80,158,50,41,248,22,161,13,247,22,145,11,11,28,192,192,27,247,22,120,
|
||||
87,94,250,22,125,80,158,51,41,248,22,161,13,247,22,145,11,195,192,87,95,
|
||||
146,13,0,8,35,114,120,34,91,46,93,34,198,196,249,22,156,6,198,6,3,
|
||||
3,46,115,115,28,249,22,137,8,248,22,64,200,64,102,105,108,101,249,22,183,
|
||||
12,248,22,88,200,248,80,159,41,54,35,201,12,87,94,28,28,248,22,158,12,
|
||||
193,10,248,22,155,7,193,12,28,199,250,22,166,8,67,114,101,113,117,105,114,
|
||||
101,249,22,181,6,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,
|
||||
116,104,126,97,28,197,248,22,64,198,6,0,0,202,250,22,167,8,2,20,249,
|
||||
22,181,6,6,13,13,109,111,100,117,108,101,32,112,97,116,104,126,97,28,197,
|
||||
248,22,64,198,6,0,0,200,27,28,248,22,155,7,194,249,22,160,7,195,34,
|
||||
249,22,185,12,248,22,186,12,196,11,27,28,248,22,155,7,195,249,22,160,7,
|
||||
196,35,248,80,158,41,50,194,91,159,37,11,90,161,37,34,11,28,248,22,155,
|
||||
7,198,250,22,7,2,22,249,22,160,7,202,36,2,22,248,22,179,12,197,27,
|
||||
28,248,22,155,7,199,249,22,160,7,200,37,249,80,158,46,51,196,5,0,27,
|
||||
28,248,22,155,7,200,249,22,160,7,201,38,248,22,148,4,199,27,27,250,22,
|
||||
126,80,158,50,41,248,22,162,13,247,22,146,11,11,28,192,192,27,247,22,120,
|
||||
87,94,250,22,125,80,158,51,41,248,22,162,13,247,22,146,11,195,192,87,95,
|
||||
28,23,16,27,250,22,126,196,197,11,28,192,12,87,95,27,27,28,248,22,17,
|
||||
80,158,50,44,80,158,49,44,247,22,19,250,22,25,248,22,23,196,80,158,52,
|
||||
43,195,27,247,22,145,11,249,22,3,89,162,34,35,53,9,226,12,11,2,3,
|
||||
43,195,27,247,22,146,11,249,22,3,89,162,34,35,53,9,226,12,11,2,3,
|
||||
33,46,195,248,28,248,22,17,80,158,49,44,32,0,89,162,34,35,40,9,222,
|
||||
33,47,80,159,48,56,35,89,162,34,34,49,9,227,14,9,8,4,3,33,48,
|
||||
250,22,125,196,197,10,12,28,28,248,22,154,7,201,11,27,248,22,132,6,23,
|
||||
15,28,192,192,28,248,22,61,23,15,249,22,136,8,248,22,64,23,17,2,21,
|
||||
11,250,22,125,80,158,49,42,28,248,22,132,6,23,17,249,22,63,23,18,248,
|
||||
80,159,52,54,35,23,20,249,22,63,23,18,247,22,134,13,252,22,156,7,23,
|
||||
250,22,125,196,197,10,12,28,28,248,22,155,7,201,11,27,248,22,133,6,23,
|
||||
15,28,192,192,28,248,22,61,23,15,249,22,137,8,248,22,64,23,17,2,21,
|
||||
11,250,22,125,80,158,49,42,28,248,22,133,6,23,17,249,22,63,23,18,248,
|
||||
80,159,52,54,35,23,20,249,22,63,23,18,247,22,135,13,252,22,157,7,23,
|
||||
15,206,204,202,201,12,193,91,159,36,10,90,161,35,34,10,11,90,161,35,35,
|
||||
10,83,158,37,20,96,96,2,20,89,162,8,36,35,49,9,224,2,0,33,42,
|
||||
89,162,34,37,47,9,223,1,33,43,89,162,34,38,8,30,9,225,2,3,0,
|
||||
33,49,208,87,95,248,22,129,4,248,80,158,36,48,247,22,145,11,248,22,183,
|
||||
5,80,158,35,35,248,22,131,12,80,159,35,40,35,159,34,20,102,159,34,16,
|
||||
33,49,208,87,95,248,22,130,4,248,80,158,36,48,247,22,146,11,248,22,184,
|
||||
5,80,158,35,35,248,22,132,12,80,159,35,40,35,159,34,20,102,159,34,16,
|
||||
1,20,24,65,98,101,103,105,110,16,0,83,158,40,20,99,131,66,35,37,98,
|
||||
111,111,116,2,1,11,10,10,10,10,10,36,80,158,34,34,20,102,159,38,16,
|
||||
19,30,2,1,2,2,193,30,2,1,2,3,193,30,2,5,72,112,97,116,104,
|
||||
|
@ -472,7 +472,7 @@
|
|||
89,162,8,36,35,43,9,223,0,33,24,80,159,34,55,35,83,158,34,16,2,
|
||||
89,162,34,35,47,67,103,101,116,45,100,105,114,223,0,33,25,80,159,34,54,
|
||||
35,83,158,34,16,2,89,162,34,36,47,68,119,105,116,104,45,100,105,114,223,
|
||||
0,33,26,80,159,34,53,35,83,158,34,16,2,248,22,151,7,69,115,111,45,
|
||||
0,33,26,80,159,34,53,35,83,158,34,16,2,248,22,152,7,69,115,111,45,
|
||||
115,117,102,102,105,120,80,159,34,34,35,83,158,34,16,2,89,162,34,36,58,
|
||||
2,3,223,0,33,35,80,159,34,35,35,83,158,34,16,2,32,0,89,162,8,
|
||||
36,35,40,2,7,222,192,80,159,34,40,35,83,158,34,16,2,248,22,120,2,
|
||||
|
|
|
@ -75,13 +75,13 @@ static double mrg32k3a(Scheme_Random_State *s) { /* (double), in {0..m1-1} */
|
|||
|
||||
/**************************************************/
|
||||
|
||||
static Scheme_Object *pack_rand_state(Scheme_Object *vec)
|
||||
static Scheme_Object *pack_rand_state(Scheme_Object *vec, Scheme_Random_State *s)
|
||||
{
|
||||
Scheme_Random_State *s;
|
||||
|
||||
s = (Scheme_Random_State *)scheme_malloc_atomic_tagged(sizeof(Scheme_Random_State));
|
||||
s->so.type = scheme_random_state_type;
|
||||
if (!s) {
|
||||
s = (Scheme_Random_State *)scheme_malloc_atomic_tagged(sizeof(Scheme_Random_State));
|
||||
s->so.type = scheme_random_state_type;
|
||||
|
||||
}
|
||||
#define REF(r, i, top) \
|
||||
{ \
|
||||
unsigned long l; \
|
||||
|
@ -196,7 +196,7 @@ static void sch_srand(unsigned int x, Scheme_Random_State *s)
|
|||
|
||||
/**************************************************/
|
||||
|
||||
static long sch_int_rand(long n, Scheme_Random_State *rs)
|
||||
static unsigned long sch_int_rand(unsigned long n, Scheme_Random_State *rs)
|
||||
{
|
||||
double x, q, qn, xq;
|
||||
|
||||
|
@ -209,7 +209,7 @@ static long sch_int_rand(long n, Scheme_Random_State *rs)
|
|||
xq = x / q;
|
||||
|
||||
/* return result */
|
||||
return (long)xq;
|
||||
return (unsigned long)xq;
|
||||
}
|
||||
|
||||
static double sch_double_rand(Scheme_Random_State *rs)
|
||||
|
|
|
@ -52,6 +52,7 @@ static Scheme_Object *current_sched_pseudo_random_generator(int argc, Scheme_Obj
|
|||
static Scheme_Object *pseudo_random_generator_p(int argc, Scheme_Object **argv);
|
||||
static Scheme_Object *sch_unpack(int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *sch_pack(int argc, Scheme_Object *argv[]);
|
||||
static Scheme_Object *sch_pack_bang(int argc, Scheme_Object *argv[]);
|
||||
|
||||
static char *number_to_allocated_string(int radix, Scheme_Object *obj, int alloc);
|
||||
|
||||
|
@ -114,7 +115,7 @@ void scheme_init_numstr(Scheme_Env *env)
|
|||
scheme_add_global_constant("random",
|
||||
scheme_make_prim_w_arity(sch_random,
|
||||
"random",
|
||||
0, 1),
|
||||
0, 2),
|
||||
env);
|
||||
scheme_add_global_constant("random-seed",
|
||||
scheme_make_prim_w_arity(random_seed,
|
||||
|
@ -131,6 +132,11 @@ void scheme_init_numstr(Scheme_Env *env)
|
|||
"vector->pseudo-random-generator",
|
||||
1, 1),
|
||||
env);
|
||||
scheme_add_global_constant("vector->pseudo-random-generator!",
|
||||
scheme_make_prim_w_arity(sch_pack_bang,
|
||||
"vector->pseudo-random-generator!",
|
||||
2, 2),
|
||||
env);
|
||||
scheme_add_global_constant("pseudo-random-generator->vector",
|
||||
scheme_make_prim_w_arity(sch_unpack,
|
||||
"pseudo-random-generator->vector",
|
||||
|
@ -2047,21 +2053,44 @@ sch_random(int argc, Scheme_Object *argv[])
|
|||
rand_state = scheme_get_param(scheme_current_config(), MZCONFIG_RANDOM_STATE);
|
||||
v = sch_double_rand((Scheme_Random_State *)rand_state);
|
||||
return scheme_make_double(v);
|
||||
} else if ((argc == 1)
|
||||
&& SAME_TYPE(SCHEME_TYPE(argv[0]), scheme_random_state_type)) {
|
||||
double v;
|
||||
Scheme_Object *rand_state;
|
||||
|
||||
rand_state = argv[0];
|
||||
v = sch_double_rand((Scheme_Random_State *)rand_state);
|
||||
return scheme_make_double(v);
|
||||
} else {
|
||||
unsigned long i, v;
|
||||
Scheme_Object *o, *rand_state;
|
||||
|
||||
o = argv[0];
|
||||
if (scheme_get_unsigned_int_val(o, &i)) {
|
||||
if (i > 2147483647)
|
||||
if (i > 4294967087UL)
|
||||
i = 0;
|
||||
} else
|
||||
i = 0;
|
||||
|
||||
if (!i)
|
||||
scheme_wrong_type("random", "exact integer in [1, 2147483647]", 0, argc, argv);
|
||||
|
||||
rand_state = scheme_get_param(scheme_current_config(), MZCONFIG_RANDOM_STATE);
|
||||
if (!i) {
|
||||
scheme_wrong_type("random",
|
||||
((argc == 1)
|
||||
? "exact integer in [1, 4294967087] or pseudo-random-generator"
|
||||
: "exact integer in [1, 4294967087]"),
|
||||
0, argc, argv);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (argc == 2) {
|
||||
rand_state = argv[1];
|
||||
if (!SAME_TYPE(SCHEME_TYPE(rand_state), scheme_random_state_type)) {
|
||||
scheme_wrong_type("random", "pseudo-random-generator", 1, argc, argv);
|
||||
return NULL;
|
||||
}
|
||||
} else {
|
||||
rand_state = scheme_get_param(scheme_current_config(), MZCONFIG_RANDOM_STATE);
|
||||
}
|
||||
|
||||
v = sch_int_rand(i, (Scheme_Random_State *)rand_state);
|
||||
|
||||
return scheme_make_integer_value_from_unsigned(v);
|
||||
|
@ -2069,22 +2098,54 @@ sch_random(int argc, Scheme_Object *argv[])
|
|||
}
|
||||
|
||||
static Scheme_Object *
|
||||
sch_pack(int argc, Scheme_Object *argv[])
|
||||
do_pack(const char *name, int argc, Scheme_Object *argv[], int set)
|
||||
{
|
||||
Scheme_Object *s;
|
||||
GC_CAN_IGNORE Scheme_Random_State rs;
|
||||
|
||||
if (SCHEME_VECTORP(argv[0]))
|
||||
s = pack_rand_state(argv[0]);
|
||||
if (set) {
|
||||
s = argv[0];
|
||||
if (!SAME_TYPE(SCHEME_TYPE(s), scheme_random_state_type)) {
|
||||
scheme_wrong_type(name, "pseudo-random-generator", 0, argc, argv);
|
||||
}
|
||||
}
|
||||
|
||||
if (SCHEME_VECTORP(argv[set]))
|
||||
s = pack_rand_state(argv[set], (set ? &rs : NULL));
|
||||
else
|
||||
s = NULL;
|
||||
|
||||
if (!s)
|
||||
scheme_wrong_type("vector->pseudo-random-generator",
|
||||
scheme_wrong_type(name,
|
||||
"vector of six elements, three in [0, 4294967086] and three in [0, 4294944442], "
|
||||
"at least one non-zero in each set of three",
|
||||
0, argc, argv);
|
||||
set, argc, argv);
|
||||
|
||||
return s;
|
||||
if (set) {
|
||||
s = argv[0];
|
||||
((Scheme_Random_State *)s)->x10 = rs.x10;
|
||||
((Scheme_Random_State *)s)->x11 = rs.x11;
|
||||
((Scheme_Random_State *)s)->x12 = rs.x12;
|
||||
((Scheme_Random_State *)s)->x20 = rs.x20;
|
||||
((Scheme_Random_State *)s)->x21 = rs.x21;
|
||||
((Scheme_Random_State *)s)->x22 = rs.x22;
|
||||
|
||||
return scheme_void;
|
||||
} else {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
sch_pack(int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return do_pack("vector->pseudo-random-generator", argc, argv, 0);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
sch_pack_bang(int argc, Scheme_Object *argv[])
|
||||
{
|
||||
return do_pack("vector->pseudo-random-generator!", argc, argv, 1);
|
||||
}
|
||||
|
||||
static Scheme_Object *
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
#define USE_COMPILED_STARTUP 1
|
||||
|
||||
#define EXPECTED_PRIM_COUNT 891
|
||||
#define EXPECTED_PRIM_COUNT 892
|
||||
|
||||
#ifdef MZSCHEME_SOMETHING_OMITTED
|
||||
# undef USE_COMPILED_STARTUP
|
||||
|
|
|
@ -10,12 +10,12 @@
|
|||
The string and the separate X/Y/Z/W numbers must
|
||||
be updated consistently. */
|
||||
|
||||
#define MZSCHEME_VERSION "3.99.0.7"
|
||||
#define MZSCHEME_VERSION "3.99.0.8"
|
||||
|
||||
#define MZSCHEME_VERSION_X 3
|
||||
#define MZSCHEME_VERSION_Y 99
|
||||
#define MZSCHEME_VERSION_Z 0
|
||||
#define MZSCHEME_VERSION_W 7
|
||||
#define MZSCHEME_VERSION_W 8
|
||||
|
||||
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
|
||||
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)
|
||||
|
|
Loading…
Reference in New Issue
Block a user