bring numerics (real, rational, etc) in line with R6RS

svn: r8832
This commit is contained in:
Matthew Flatt 2008-02-29 19:53:51 +00:00
parent 11e9f0f2c1
commit 3e77d0b60f
27 changed files with 1026 additions and 972 deletions

View File

@ -8,7 +8,7 @@ FIXME:
(require (for-syntax scheme/base (require (for-syntax scheme/base
syntax/kerncase syntax/kerncase
"private/find-version.ss" (prefix-in parse: "private/parse-ref.ss")
scheme/provide-transform)) scheme/provide-transform))
(provide (rename-out [module-begin #%module-begin])) (provide (rename-out [module-begin #%module-begin]))
@ -169,83 +169,18 @@ FIXME:
;; ---------------------------------------- ;; ----------------------------------------
;; Imports and exports ;; Imports and exports
(define-for-syntax (is-sub-version-reference? stx)
(syntax-case* stx (<= >= and or not) symbolic-identifier=?
[n (exact-nonnegative-integer? (syntax-e #'n)) #t]
[(>= n) (exact-nonnegative-integer? (syntax-e #'n))]
[(<= n) (exact-nonnegative-integer? (syntax-e #'n))]
[(and sv ...) (andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[(or sv ...) (andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[(not sv) (is-sub-version-reference? #'sv)]
[_ #f]))
(define-for-syntax (is-version-reference? stx)
(syntax-case* stx (and or not) symbolic-identifier=?
[(and vr ...)
(andmap is-version-reference? (syntax->list #'(vr ...)))]
[(or vr ...)
(andmap is-version-reference? (syntax->list #'(vr ...)))]
[(not vr)
(is-version-reference? #'vr)]
[(sv ...)
(andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[_ #f]))
(define-for-syntax (parse-library-reference orig stx) (define-for-syntax (parse-library-reference orig stx)
(syntax-case stx () (datum->syntax
[(id1 id2 ... (vers ...)) orig
(and (identifier? #'id1) `(,#'lib
(andmap identifier? (syntax->list #'(id2 ...))) ,(parse:parse-library-reference stx
(is-version-reference? #'(vers ...))) (lambda (msg)
(let-values ([(coll file) (raise-syntax-error
(let ([strs (map (lambda (id) #f
(symbol->string (syntax-e id))) msg
(syntax->list #'(id1 id2 ...)))]) orig
(if (= 1 (length strs)) stx))))
(values (list (car strs)) "main") orig))
(values (reverse (cdr (reverse strs)))
(car (reverse strs)))))])
(let ([base (build-path (with-handlers ([exn:fail?
(lambda (exn)
(raise-syntax-error
#f
(format
"cannot find suitable library installed (exception: ~a)"
(if (exn? exn)
(exn-message exn)
exn))
orig
stx))])
(apply collection-path coll))
file)])
(let ([vers (find-version (path->bytes base) (syntax->datum #'(vers ...)))])
(if vers
(datum->syntax
orig
`(,#'lib ,(apply string-append
(car coll)
(append
(map (lambda (s)
(string-append "/" s))
(append (cdr coll) (list file)))
(map (lambda (v)
(format "-~a" v))
vers)
(list ".ss")))))
(raise-syntax-error
#f
"cannot find suitable installed library"
orig
stx)))))]
[(id1 id2 ...)
(and (identifier? #'id1)
(andmap identifier? (syntax->list #'(id2 ...))))
(parse-library-reference orig #'(id1 id2 ... ()))]
[_
(raise-syntax-error #f
"ill-formed library reference"
orig
stx)]))
(define-for-syntax (parse-import-set orig stx) (define-for-syntax (parse-import-set orig stx)
(define (bad) (define (bad)

View File

@ -0,0 +1,74 @@
#lang scheme/base
(require "find-version.ss")
(provide parse-library-reference)
(define (symbolic-identifier=? a b)
(eq? (syntax-e a) (syntax-e b)))
(define (is-sub-version-reference? stx)
(syntax-case* stx (<= >= and or not) symbolic-identifier=?
[n (exact-nonnegative-integer? (syntax-e #'n)) #t]
[(>= n) (exact-nonnegative-integer? (syntax-e #'n))]
[(<= n) (exact-nonnegative-integer? (syntax-e #'n))]
[(and sv ...) (andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[(or sv ...) (andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[(not sv) (is-sub-version-reference? #'sv)]
[_ #f]))
(define (is-version-reference? stx)
(syntax-case* stx (and or not) symbolic-identifier=?
[(and vr ...)
(andmap is-version-reference? (syntax->list #'(vr ...)))]
[(or vr ...)
(andmap is-version-reference? (syntax->list #'(vr ...)))]
[(not vr)
(is-version-reference? #'vr)]
[(sv ...)
(andmap is-sub-version-reference? (syntax->list #'(sv ...)))]
[_ #f]))
(define (parse-library-reference stx err)
(syntax-case stx ()
[(id1 id2 ... (vers ...))
(and (identifier? #'id1)
(andmap identifier? (syntax->list #'(id2 ...)))
(is-version-reference? #'(vers ...)))
(let-values ([(coll file)
(let ([strs (map (lambda (id)
(symbol->string (syntax-e id)))
(syntax->list #'(id1 id2 ...)))])
(if (= 1 (length strs))
(values (list (car strs)) "main")
(values (reverse (cdr (reverse strs)))
(car (reverse strs)))))])
(let ([base (build-path (with-handlers ([exn:fail?
(lambda (exn)
(err
(format
"cannot find suitable library installed (exception: ~a)"
(if (exn? exn)
(exn-message exn)
exn))))])
(apply collection-path coll))
file)])
(let ([vers (find-version (path->bytes base) (syntax->datum #'(vers ...)))])
(if vers
(apply string-append
(car coll)
(append
(map (lambda (s)
(string-append "/" s))
(append (cdr coll) (list file)))
(map (lambda (v)
(format "-~a" v))
vers)
(list ".ss")))
(err "cannot find suitable installed library")))))]
[(id1 id2 ...)
(and (identifier? #'id1)
(andmap identifier? (syntax->list #'(id2 ...))))
(parse-library-reference #'(id1 id2 ... ()) err)]
[_
(err "ill-formed library reference")]))

View File

@ -13,20 +13,11 @@
greatest-fixnum) greatest-fixnum)
;; Many other provides from macros below ;; Many other provides from macros below
(define (fixnum-width) 30) (define 64-bit? (fixnum? (expt 2 33)))
(define (least-fixnum) -1073741824)
(define (greatest-fixnum) +1073741824)
(define (r6rs:fixnum? v) (define (fixnum-width) (if 64-bit? 62 30))
(and (exact-integer? v) (define (least-fixnum) (if 64-bit? (- (expt 2 62)) -1073741824))
(<= -1073741824 v 1073741823))) (define (greatest-fixnum) (if 64-bit? (- (expt 2 62) 1) +1073741823))
(define-syntax fixnum?
(inline-rules
r6rs:fixnum?
[(_ a) (let ([v a])
(and (exact-integer? v)
(<= -1073741824 v 1073741823)))]))
(define-syntax-rule (check v alt) (define-syntax-rule (check v alt)
(if (fixnum? v) (if (fixnum? v)

View File

@ -11,23 +11,14 @@
r6rs/private/num-inline r6rs/private/num-inline
(for-syntax r6rs/private/inline-rules)) (for-syntax r6rs/private/inline-rules))
(provide flonum? (provide (rename-out [inexact-real? flonum?])
real->flonum real->flonum
&no-infinities make-no-infinities-violation no-infinities-violation? &no-infinities make-no-infinities-violation no-infinities-violation?
&no-nans make-no-nans-violation no-nans-violation? &no-nans make-no-nans-violation no-nans-violation?
fixnum->flonum) fixnum->flonum)
;; More provided via macros ;; More provided via macros
(define (r6rs:flonum? v) (define-inliner define-fl inexact-real? "flonum")
(and (real? v) (inexact? v)))
(define-syntax flonum?
(inline-rules
r6rs:flonum?
[(_ a) (let ([v a])
(and (real? v) (inexact? v)))]))
(define-inliner define-fl flonum? "flonum")
(define-fl = fl=? (a b c ...) nocheck) (define-fl = fl=? (a b c ...) nocheck)
(define-fl > fl>? (a b c ...) nocheck) (define-fl > fl>? (a b c ...) nocheck)

View File

@ -46,13 +46,8 @@
procedure? procedure?
;; 11.7.4 ;; 11.7.4
number? complex? number? complex? real? rational? integer?
(rename-out [r6rs:real? real?] real-valued? rational-valued? integer-valued?
[r6rs:rational? rational?]
[r6rs:integer? integer?]
[real? real-valued?]
[rational? rational-valued?]
[integer? integer-valued?])
exact? inexact? exact? inexact?
(rename-out [inexact->exact exact] (rename-out [inexact->exact exact]
[exact->inexact inexact]) [exact->inexact inexact])
@ -177,24 +172,27 @@
;; ---------------------------------------- ;; ----------------------------------------
(define (r6rs:real? n) (define (real-valued? o)
(and (real? n) (or (real? o)
(exact? (imag-part n)))) (and (complex? o)
(zero? (imag-part o)))))
(define (r6rs:rational? n) (define (rational-valued? o)
(and (rational? n) (or (rational? o)
(r6rs:real? n) (and (complex? o)
(not (and (inexact? n) (zero? (imag-part o))
(or (eqv? n +inf.0) (rational? (real-part o)))))
(eqv? n -inf.0)
(eqv? n +nan.0))))))
(define (r6rs:integer? n) (define (integer-valued? o)
(and (integer? n) (or (integer? o)
(r6rs:rational? n))) (and (complex? o)
(zero? (imag-part o))
(integer? (real-part o)))))
(define (finite? n) (define (finite? n)
(r6rs:real? n)) (not (or (eqv? n +inf.0)
(eqv? n -inf.0)
(eqv? n +nan.0))))
(define (infinite? n) (define (infinite? n)
(or (eqv? n +inf.0) (or (eqv? n +inf.0)

27
collects/rnrs/eval-6.ss Normal file
View File

@ -0,0 +1,27 @@
#lang scheme/base
(require (only-in r6rs)
r6rs/private/parse-ref)
(provide (rename-out [r6rs:eval eval])
environment)
(define-namespace-anchor anchor)
(define (r6rs:eval expr env)
(eval #`(#%expression #,expr) env))
(define (environment . specs)
(let ([mod-paths
(map (lambda (spec)
`(lib ,(parse-library-reference
spec
(lambda (msg)
(error 'environment "~a: ~e" msg spec)))))
specs)])
(let ([ns (namespace-anchor->empty-namespace anchor)])
;; Make sure all modules are instantiated here:
(parameterize ([current-namespace ns])
(for-each namespace-require mod-paths))
ns)))

View File

@ -11,9 +11,12 @@
All numbers are @deftech{complex numbers}. Some of them are All numbers are @deftech{complex numbers}. Some of them are
@deftech{real numbers}, and all of the real numbers that can be @deftech{real numbers}, and all of the real numbers that can be
represented are also @deftech{rational numbers}. Among the real represented are also @deftech{rational numbers}, except for
numbers, some are @deftech{integers}, because @scheme[round] applied @as-index{@scheme[+inf.0]} (positive @as-index{infinity}),
to the number produces the same number. @as-index{@scheme[-inf.0]} (negative infinity), and
@as-index{@scheme[+nan.0]} (@as-index{not-a-number}). Among the
rational numbers, some are @deftech{integers}, because @scheme[round]
applied to the number produces the same number.
Orthogonal to those categories, each number is also either an Orthogonal to those categories, each number is also either an
@deftech{exact number} or an @deftech{inexact number}. Unless @deftech{exact number} or an @deftech{inexact number}. Unless
@ -26,8 +29,8 @@ produce inexact results even for exact arguments.
In the case of complex numbers, either the real and imaginary parts In the case of complex numbers, either the real and imaginary parts
are both exact or inexact, or the number has an exact zero real part are both exact or inexact, or the number has an exact zero real part
and an inexact imaginary part; a complex number with an zero imaginary and an inexact imaginary part; a complex number with an exact zero
part (inexact or exact) is a real number. imaginary part is a real number.
Inexact real numbers are implemented as either single- or Inexact real numbers are implemented as either single- or
double-precision @as-index{IEEE floating-point numbers}---the latter double-precision @as-index{IEEE floating-point numbers}---the latter
@ -42,13 +45,11 @@ numbers). In particular, adding, multiplying, subtracting, and
dividing exact numbers always produces an extract result. dividing exact numbers always produces an extract result.
Inexact numbers can be coerced to exact form, except for the inexact Inexact numbers can be coerced to exact form, except for the inexact
numbers @as-index{@scheme[+inf.0]} (positive @as-index{infinity}), numbers @scheme[+inf.0], @scheme[-inf.0], and @scheme[+nan.0], which
@as-index{@scheme[-inf.0]} (negative infinity), and have no exact form. @index["division by inexact zero"]{Dividing} a
@as-index{@scheme[+nan.0]} (@as-index{not-a-number}), which have no number by exact zero raises an exception; dividing a non-zero number
exact form. @index["division by inexact zero"]{Dividing} a number by other than @scheme[+nan.0] by an inexact zero returns @scheme[+inf.0]
exact zero raises an exception; dividing a non-zero number other than or @scheme[-inf.0], depending on the sign of the dividend. The
@scheme[+nan.0] by an inexact zero returns @scheme[+inf.0] or
@scheme[-inf.0], depending on the sign of the dividend. The
infinities @scheme[+inf.0] and @scheme[-inf.0] are integers, and they infinities @scheme[+inf.0] and @scheme[-inf.0] are integers, and they
answer @scheme[#t] for both @scheme[even?] and @scheme[odd?]. The answer @scheme[#t] for both @scheme[even?] and @scheme[odd?]. The
@scheme[+nan.0] value is not an integer and is not @scheme[=] to @scheme[+nan.0] value is not an integer and is not @scheme[=] to
@ -84,26 +85,27 @@ noted above). Two numbers are @scheme[equal?] when they are
@defproc[(complex? [v any/c]) boolean?]{ Returns @scheme[(number? #, @defproc[(complex? [v any/c]) boolean?]{ Returns @scheme[(number? #,
@scheme[v])], because all numbers are complex numbers.} @scheme[v])], because all numbers are @tech{complex numbers}.}
@defproc[(real? [v any/c]) boolean?]{ Returns @scheme[#t] if @scheme[v] is @defproc[(real? [v any/c]) boolean?]{ Returns @scheme[#t] if @scheme[v] is
a real number, @scheme[#f] otherwise. A number with an inexact zero a @techlink{real number}, @scheme[#f] otherwise.
imaginary part is a real number.
@examples[(real? 1) (real? 2+3i) (real? "hello")]} @examples[(real? 1) (real? +inf.0) (real? 2+3i)
(real? 2+0.0i) (real? "hello")]}
@defproc[(rational? [v any/c]) boolean?]{ Returns @scheme[(real? #, @defproc[(rational? [v any/c]) boolean?]{ Returns @scheme[#t] if
@scheme[v])].} @scheme[v] is a @techlink{rational number}, @scheme[#f] otherwise.
@examples[(rational? 1) (rational? +inf.0) (real? "hello")]}
@defproc[(integer? [v any/c]) boolean?]{ Returns @scheme[#t] if @scheme[v] @defproc[(integer? [v any/c]) boolean?]{ Returns @scheme[#t] if @scheme[v]
is a number that is an integer, @scheme[#f] otherwise. The inexact is a number that is an @techlink{integer}, @scheme[#f] otherwise.
numbers @scheme[+inf.0] and @scheme[-inf.0] are integers, but
@scheme[+nan.0] is not.
@examples[(integer? 1) (integer? 2.3) (integer? 4.0) (integer? 2+3i) (integer? "hello")]} @examples[(integer? 1) (integer? 2.3) (integer? 4.0) (integer? +inf.0)
(integer? 2+3i) (integer? "hello")]}
@defproc[(exact-integer? [v any/c]) boolean?]{ @defproc[(exact-integer? [v any/c]) boolean?]{
@ -127,6 +129,17 @@ Returns @scheme[(and (exact-integer? v) (positive? v))].
@examples[(exact-positive-integer? 1) (exact-positive-integer? 0)]} @examples[(exact-positive-integer? 1) (exact-positive-integer? 0)]}
@defproc[(inexact-real? [v any/c]) boolean?]{
Returns @scheme[(and (real? v) (inexact? v))].}
@defproc[(fixnum? [v any/c]) boolean?]{
Return @scheme[#t] if @scheme[v] is a @techlink{fixnum}, @scheme[#f]
otherwise.}
@defproc[(zero? [z number?]) boolean?]{ Returns @scheme[(= 0 z)]. @defproc[(zero? [z number?]) boolean?]{ Returns @scheme[(= 0 z)].
@examples[(zero? 0) (zero? -0.0)]} @examples[(zero? 0) (zero? -0.0)]}
@ -405,7 +418,7 @@ used.
@examples[(sqrt 4/9) (sqrt 2) (sqrt -1)]} @examples[(sqrt 4/9) (sqrt 2) (sqrt -1)]}
@defproc[(integer-sqrt [n integer?]) integer?]{ Returns @scheme[(floor @defproc[(integer-sqrt [n integer?]) complex?]{ Returns @scheme[(floor
(sqrt n))] for positive @scheme[n]. For negative @scheme[n], the result is (sqrt n))] for positive @scheme[n]. For negative @scheme[n], the result is
@scheme[(* (integer-sqrt (- n)) 0+i)]. @scheme[(* (integer-sqrt (- n)) 0+i)].

View File

@ -47,14 +47,14 @@
(test #t number? 3.0+0.0i) (test #t number? 3.0+0.0i)
(test #t complex? 3.0+0.0i) (test #t complex? 3.0+0.0i)
(test #t real? 3.0+0.0i) (test #f real? 3.0+0.0i)
(test #t rational? 3.0+0.0i) (test #f rational? 3.0+0.0i)
(test #t integer? 3.0+0.0i) (test #f integer? 3.0+0.0i)
(test #t number? 3.1+0.0i) (test #t number? 3.1+0.0i)
(test #t complex? 3.1+0.0i) (test #t complex? 3.1+0.0i)
(test #t real? 3.1+0.0i) (test #f real? 3.1+0.0i)
(test #t rational? 3.1+0.0i) (test #f rational? 3.1+0.0i)
(test #f integer? 3.1+0.0i) (test #f integer? 3.1+0.0i)
(test #t exact? 3) (test #t exact? 3)
@ -84,19 +84,19 @@
(test #t number? +inf.0) (test #t number? +inf.0)
(test #t complex? +inf.0) (test #t complex? +inf.0)
(test #t real? +inf.0) (test #t real? +inf.0)
(test #t rational? +inf.0) (test #f rational? +inf.0)
(test #t integer? +inf.0) (test #f integer? +inf.0)
(test #t number? -inf.0) (test #t number? -inf.0)
(test #t complex? -inf.0) (test #t complex? -inf.0)
(test #t real? -inf.0) (test #t real? -inf.0)
(test #t rational? -inf.0) (test #f rational? -inf.0)
(test #t integer? -inf.0) (test #f integer? -inf.0)
(test #t number? +nan.0) (test #t number? +nan.0)
(test #t complex? +nan.0) (test #t complex? +nan.0)
(test #t real? +nan.0) (test #t real? +nan.0)
(test #t rational? +nan.0) (test #f rational? +nan.0)
(test #f integer? +nan.0) (test #f integer? +nan.0)
(arity-test inexact? 1 1) (arity-test inexact? 1 1)
@ -204,7 +204,14 @@
(test-compare 1 11922615739/10210200 3000) (test-compare 1 11922615739/10210200 3000)
(test-compare 1.0 11922615739/10210200 3000.0) (test-compare 1.0 11922615739/10210200 3000.0)
(test-compare 0.4+0.i 1/2 2.3+0.i) (err/rt-test (< 1 2.3+0.0i))
(err/rt-test (> 1 2.3+0.0i))
(err/rt-test (<= 1 2.3+0.0i))
(err/rt-test (>= 1 2.3+0.0i))
(err/rt-test (< 2.3+0.0i 1))
(err/rt-test (> 2.3+0.0i 1))
(err/rt-test (<= 2.3+0.0i 1))
(err/rt-test (>= 2.3+0.0i 1))
(test #f > 0 (/ 1 (expt 2 400))) (test #f > 0 (/ 1 (expt 2 400)))
@ -273,7 +280,7 @@
(test-nan +nan.0) (test-nan +nan.0)
(test-nan +inf.0) (test-nan +inf.0)
(test-nan -inf.0) (test-nan -inf.0)
(test-nan 0.3+0.0i) (err/rt-test (test-nan 0.3+0.0i))
(test #f = +nan.0 1+2i) (test #f = +nan.0 1+2i)
(test #f = +nan.0 (make-rectangular +inf.0 -inf.0)) (test #f = +nan.0 (make-rectangular +inf.0 -inf.0))
@ -375,8 +382,6 @@
(test #t positive? +inf.0) (test #t positive? +inf.0)
(test #f positive? -inf.0) (test #f positive? -inf.0)
(test #f positive? +nan.0) (test #f positive? +nan.0)
(test #t positive? 5+0.0i)
(test #f positive? -5+0.0i)
(test #t positive? (expt 2 37)) (test #t positive? (expt 2 37))
(test #f positive? (expt -2 37)) (test #f positive? (expt -2 37))
(test #f negative? 4) (test #f negative? 4)
@ -393,16 +398,16 @@
(test #f negative? +inf.0) (test #f negative? +inf.0)
(test #t negative? -inf.0) (test #t negative? -inf.0)
(test #f negative? +nan.0) (test #f negative? +nan.0)
(test #f negative? 5+0.0i) (err/rt-test (negative? 5+0.0i))
(test #t negative? -5+0.0i) (err/rt-test (negative? -5+0.0i))
(test #t odd? 3) (test #t odd? 3)
(test #f odd? 2) (test #f odd? 2)
(test #f odd? -4) (test #f odd? -4)
(test #t odd? -1) (test #t odd? -1)
(test #t odd? +inf.0) (err/rt-test (odd? +inf.0))
(test #t odd? -inf.0) (err/rt-test (odd? -inf.0))
(test #t odd? 5+0.0i) (err/rt-test (odd? 5+0.0i))
(test #f odd? 4+0.0i) (err/rt-test (odd? 4+0.0i))
(test #f odd? (expt 2 37)) (test #f odd? (expt 2 37))
(test #f odd? (expt -2 37)) (test #f odd? (expt -2 37))
(test #t odd? (add1 (expt 2 37))) (test #t odd? (add1 (expt 2 37)))
@ -411,10 +416,10 @@
(test #t even? 2) (test #t even? 2)
(test #t even? -4) (test #t even? -4)
(test #f even? -1) (test #f even? -1)
(test #t even? +inf.0) (err/rt-test (even? +inf.0))
(test #t even? -inf.0) (err/rt-test (even? -inf.0))
(test #t even? 4+0.0i) (err/rt-test (even? 4+0.0i))
(test #f even? 5+0.0i) (err/rt-test (even? 5+0.0i))
(test #t even? (expt 2 37)) (test #t even? (expt 2 37))
(test #t even? (expt -2 37)) (test #t even? (expt -2 37))
(test #f even? (add1 (expt 2 37))) (test #f even? (add1 (expt 2 37)))
@ -426,6 +431,8 @@
(arity-test odd? 1 1) (arity-test odd? 1 1)
(arity-test even? 1 1) (arity-test even? 1 1)
(err/rt-test (positive? 5+0.0i))
(err/rt-test (positive? -5+0.0i))
(err/rt-test (positive? 2+i)) (err/rt-test (positive? 2+i))
(err/rt-test (negative? 2+i)) (err/rt-test (negative? 2+i))
(err/rt-test (odd? 4.1)) (err/rt-test (odd? 4.1))
@ -459,14 +466,14 @@
(test -inf.0 min +inf.0 0 -inf.0) (test -inf.0 min +inf.0 0 -inf.0)
(test-nan.0 max +inf.0 +nan.0 0 -inf.0) (test-nan.0 max +inf.0 +nan.0 0 -inf.0)
(test-nan.0 min +inf.0 0 +nan.0 -inf.0) (test-nan.0 min +inf.0 0 +nan.0 -inf.0)
(test 9.0 min 9.0+0.0i 100) (err/rt-test (min 9.0+0.0i 100))
(test 8.0 min 9.0+0.0i 8) (err/rt-test (min 9.0+0.0i 8))
(test 9.0 min 100 9.0+0.0i) (err/rt-test (min 100 9.0+0.0i))
(test 8.0 min 8 9.0+0.0i) (err/rt-test (min 8 9.0+0.0i))
(test 100.0 max 9.0+0.0i 100) (err/rt-test (max 9.0+0.0i 100))
(test 9.0 max 9.0+0.0i 8) (err/rt-test (max 9.0+0.0i 8))
(test 100.0 max 100 9.0+0.0i) (err/rt-test (max 100 9.0+0.0i))
(test 9.0 max 8 9.0+0.0i) (err/rt-test (max 8 9.0+0.0i))
(test (expt 5 27) max 9 (expt 5 27)) (test (expt 5 27) max 9 (expt 5 27))
(test (expt 5 29) max (expt 5 29) (expt 5 27)) (test (expt 5 29) max (expt 5 29) (expt 5 27))
@ -811,7 +818,7 @@
(test +inf.0 abs +inf.0) (test +inf.0 abs +inf.0)
(test +inf.0 abs -inf.0) (test +inf.0 abs -inf.0)
(test-nan.0 abs -nan.0) (test-nan.0 abs -nan.0)
(test 4.0 abs -4.0+0.0i) (err/rt-test (abs -4.0+0.0i))
(test 1073741823 abs -1073741823) (test 1073741823 abs -1073741823)
(test 1073741823 abs 1073741823) (test 1073741823 abs 1073741823)
@ -837,8 +844,8 @@
(test 5.0 quotient -35 -7.0) (test 5.0 quotient -35 -7.0)
(test -5.0 quotient -36 7.0) (test -5.0 quotient -36 7.0)
(test -5.0 quotient 36.0 -7) (test -5.0 quotient 36.0 -7)
(test -5.0 quotient 36.0 -7+0.0i) (err/rt-test (quotient 36.0 -7+0.0i))
(test -5.0 quotient 36.0+0.0i -7) (err/rt-test (quotient 36.0+0.0i -7))
(test 0 quotient 0 5.0) (test 0 quotient 0 5.0)
(test 0 quotient 0 -5.0) (test 0 quotient 0 -5.0)
(test 1 modulo 13 4) (test 1 modulo 13 4)
@ -857,10 +864,10 @@
(test -1 remainder -13 -4) (test -1 remainder -13 -4)
(test -1.0 modulo -13 -4.0) (test -1.0 modulo -13 -4.0)
(test -1.0 remainder -13 -4.0) (test -1.0 remainder -13 -4.0)
(test -1.0 modulo -13 -4.0+0.0i) (err/rt-test (modulo -13 -4.0+0.0i))
(test -1.0 remainder -13 -4.0+0.0i) (err/rt-test (remainder -13 -4.0+0.0i))
(test -1.0 modulo -13+0.0i -4.0) (err/rt-test (modulo -13+0.0i -4.0))
(test -1.0 remainder -13+0.0i -4.0) (err/rt-test (remainder -13+0.0i -4.0))
(test -2 remainder -3333333332 -3) (test -2 remainder -3333333332 -3)
(test -2 modulo -3333333332 -3) (test -2 modulo -3333333332 -3)
(test 2 remainder 3333333332 -3) (test 2 remainder 3333333332 -3)
@ -908,47 +915,37 @@
(define (test-qrm-inf v) (define (test-qrm-inf v)
(define iv (exact->inexact v)) (define iv (exact->inexact v))
(test 0.0 quotient v +inf.0) (err/rt-test (quotient v +inf.0))
(test -0.0 quotient v -inf.0) (err/rt-test (quotient v -inf.0))
(test iv remainder v +inf.0) (err/rt-test (remainder v +inf.0))
(test iv remainder v -inf.0) (err/rt-test (remainder v -inf.0))
(test iv modulo v +inf.0) (err/rt-test (modulo v +inf.0))
(test -inf.0 modulo v -inf.0) (err/rt-test (modulo v -inf.0))
(test +inf.0 quotient +inf.0 v) (err/rt-test (quotient +inf.0 v))
(test -inf.0 quotient -inf.0 v) (err/rt-test (quotient -inf.0 v))
(test 0.0 remainder +inf.0 v) (err/rt-test (remainder +inf.0 v))
(test 0.0 remainder -inf.0 v) (err/rt-test (remainder -inf.0 v))
(test 0.0 modulo +inf.0 v) (err/rt-test (modulo +inf.0 v))
(test 0.0 modulo -inf.0 v)) (err/rt-test (modulo -inf.0 v)))
(test-qrm-inf 9) (test-qrm-inf 9)
(test-qrm-inf 9.0) (test-qrm-inf 9.0)
(test-qrm-inf (expt 2 100)) (test-qrm-inf (expt 2 100))
(test-qrm-inf 0.0)
(test-qrm-inf -0.0)
;; Check 0.0 combinations ;; Check 0.0 combinations
(test -0.0 quotient -0.0 +inf.0)
(test 0.0 quotient -0.0 -inf.0)
(test -0.0 quotient -0.0 2.0) (test -0.0 quotient -0.0 2.0)
(test 0.0 quotient -0.0 -2.0) (test 0.0 quotient -0.0 -2.0)
(test 0.0 quotient 0.0 +inf.0)
(test -0.0 quotient 0.0 -inf.0)
(test 0.0 quotient 0.0 2.0) (test 0.0 quotient 0.0 2.0)
(test -0.0 quotient 0.0 -2.0) (test -0.0 quotient 0.0 -2.0)
(test 0.0 modulo -0.0 +inf.0)
(test 0.0 modulo -0.0 -inf.0)
(test 0.0 modulo -0.0 2.0) (test 0.0 modulo -0.0 2.0)
(test 0.0 modulo -0.0 -2.0) (test 0.0 modulo -0.0 -2.0)
(test 0.0 modulo 0.0 +inf.0)
(test 0.0 modulo 0.0 -inf.0)
(test 0.0 modulo 0.0 2.0) (test 0.0 modulo 0.0 2.0)
(test 0.0 modulo 0.0 -2.0) (test 0.0 modulo 0.0 -2.0)
(test 0.0 remainder -0.0 +inf.0)
(test 0.0 remainder -0.0 -inf.0)
(test 0.0 remainder -0.0 2.0) (test 0.0 remainder -0.0 2.0)
(test 0.0 remainder -0.0 -2.0) (test 0.0 remainder -0.0 -2.0)
(test 0.0 remainder 0.0 +inf.0)
(test 0.0 remainder 0.0 -inf.0)
(test 0.0 remainder 0.0 2.0) (test 0.0 remainder 0.0 2.0)
(test 0.0 remainder 0.0 -2.0) (test 0.0 remainder 0.0 -2.0)
@ -1117,8 +1114,8 @@
(test 5.0 gcd 5.0 10) (test 5.0 gcd 5.0 10)
(test 5.0 gcd -5.0 10) (test 5.0 gcd -5.0 10)
(test 5.0 gcd 5.0 -10) (test 5.0 gcd 5.0 -10)
(test 5.0 gcd 5.0+0.0i 10) (err/rt-test (gcd 5.0+0.0i 10))
(test 5.0 gcd 5.0 10+0.0i) (err/rt-test (gcd 5.0 10+0.0i))
(test (expt 3 37) gcd (expt 9 35) (expt 6 37)) (test (expt 3 37) gcd (expt 9 35) (expt 6 37))
(test (expt 3 37) gcd (- (expt 9 35)) (expt 6 37)) (test (expt 3 37) gcd (- (expt 9 35)) (expt 6 37))
(test (expt 3 37) gcd (expt 9 35) (- (expt 6 37))) (test (expt 3 37) gcd (expt 9 35) (- (expt 6 37)))
@ -1128,8 +1125,6 @@
(test 6 gcd 66 (* 3 (expt 2 100))) (test 6 gcd 66 (* 3 (expt 2 100)))
(test 201.0 gcd (* 67 (expt 3 20)) (* 67. 3)) (test 201.0 gcd (* 67 (expt 3 20)) (* 67. 3))
(test 201.0 gcd (* 67. 3) (* 67 (expt 3 20))) (test 201.0 gcd (* 67. 3) (* 67 (expt 3 20)))
(test 9.0 gcd +inf.0 9)
(test 9.0 gcd -inf.0 9)
(test (expt 9 35) gcd (expt 9 35) 0) (test (expt 9 35) gcd (expt 9 35) 0)
(test (expt 9 35) gcd 0 (expt 9 35)) (test (expt 9 35) gcd 0 (expt 9 35))
(test 288 lcm 32 -36) (test 288 lcm 32 -36)
@ -1138,8 +1133,8 @@
(test 5 lcm 5) (test 5 lcm 5)
(test 0 lcm 123 0) (test 0 lcm 123 0)
(test 30.0 lcm 5 6.0) (test 30.0 lcm 5 6.0)
(test 30.0 lcm 5 6.0+0.0i) (err/rt-test (lcm 5 6.0+0.0i))
(test 30.0 lcm 5+0.0i 6.0) (err/rt-test (lcm 5+0.0i 6.0))
(test 0.0 lcm 123 0.0) (test 0.0 lcm 123 0.0)
(test 0.0 lcm 123 -0.0) (test 0.0 lcm 123 -0.0)
(test (* (expt 2 37) (expt 9 35)) lcm (expt 9 35) (expt 6 37)) (test (* (expt 2 37) (expt 9 35)) lcm (expt 9 35) (expt 6 37))
@ -1147,10 +1142,14 @@
(test (* (expt 2 37) (expt 9 35)) lcm (expt 9 35) (- (expt 6 37))) (test (* (expt 2 37) (expt 9 35)) lcm (expt 9 35) (- (expt 6 37)))
(err/rt-test (gcd +nan.0)) (err/rt-test (gcd +nan.0))
(err/rt-test (gcd +inf.0))
(err/rt-test (gcd -inf.0))
(err/rt-test (gcd 'a)) (err/rt-test (gcd 'a))
(err/rt-test (gcd 'a 1)) (err/rt-test (gcd 'a 1))
(err/rt-test (gcd 1 'a)) (err/rt-test (gcd 1 'a))
(err/rt-test (lcm +nan.0)) (err/rt-test (lcm +nan.0))
(err/rt-test (lcm +inf.0))
(err/rt-test (lcm -inf.0))
(err/rt-test (lcm 'a)) (err/rt-test (lcm 'a))
(err/rt-test (lcm 'a 1)) (err/rt-test (lcm 'a 1))
(err/rt-test (lcm 1 'a)) (err/rt-test (lcm 1 'a))
@ -1168,6 +1167,10 @@
(err/rt-test (gcd 5.0 +nan.0)) (err/rt-test (gcd 5.0 +nan.0))
(err/rt-test (lcm +nan.0 5.0)) (err/rt-test (lcm +nan.0 5.0))
(err/rt-test (lcm 5.0 +nan.0)) (err/rt-test (lcm 5.0 +nan.0))
(err/rt-test (gcd +inf.0 5.0))
(err/rt-test (gcd 5.0 +inf.0))
(err/rt-test (lcm +inf.0 5.0))
(err/rt-test (lcm 5.0 +inf.0))
(arity-test gcd 0 -1) (arity-test gcd 0 -1)
(arity-test lcm 0 -1) (arity-test lcm 0 -1)
@ -1240,10 +1243,22 @@
(test 4.0 round 3.5) (test 4.0 round 3.5)
(test -4.0 round -3.5) (test -4.0 round -3.5)
(test 2.0 floor 2.6+0.0i) (err/rt-test (floor 2.6+0.0i))
(test 3.0 ceiling 2.6+0.0i) (err/rt-test (ceiling 2.6+0.0i))
(test 3.0 round 2.6+0.0i) (err/rt-test (round 2.6+0.0i))
(test 2.0 truncate 2.6+0.0i) (err/rt-test (truncate 2.6+0.0i))
(err/rt-test (floor +inf.0))
(err/rt-test (ceiling +inf.0))
(err/rt-test (round +inf.0))
(err/rt-test (truncate +inf.0))
(err/rt-test (floor -inf.0))
(err/rt-test (ceiling -inf.0))
(err/rt-test (round -inf.0))
(err/rt-test (truncate -inf.0))
(err/rt-test (floor +nan0))
(err/rt-test (ceiling +nan0))
(err/rt-test (round +nan0))
(err/rt-test (truncate +nan0))
(define (test-fcrt-int v) (define (test-fcrt-int v)
(test v floor v) (test v floor v)
@ -1254,13 +1269,6 @@
(test-fcrt-int 2) (test-fcrt-int 2)
(test-fcrt-int 2.0) (test-fcrt-int 2.0)
(test-fcrt-int (expt 2 100)) (test-fcrt-int (expt 2 100))
(test-fcrt-int +inf.0)
(test-fcrt-int -inf.0)
(test-nan.0 floor +nan.0)
(test-nan.0 ceiling +nan.0)
(test-nan.0 round +nan.0)
(test-nan.0 truncate +nan.0)
(arity-test round 1 1) (arity-test round 1 1)
(arity-test floor 1 1) (arity-test floor 1 1)
@ -1280,21 +1288,21 @@
(test 5 numerator 5) (test 5 numerator 5)
(test 5000000000000 numerator 5000000000000) (test 5000000000000 numerator 5000000000000)
(test 5.0 numerator 5.0) (test 5.0 numerator 5.0)
(test 5.0 numerator 5.0+0.0i) (err/rt-test (numerator 5.0+0.0i))
(test 1 denominator 5) (test 1 denominator 5)
(test 1 denominator 5000000000000) (test 1 denominator 5000000000000)
(test 1.0 denominator 5.0) (test 1.0 denominator 5.0)
(test 1.0 denominator 5.0+0.0i) (err/rt-test (denominator 5.0+0.0i))
(test 2 numerator 2/3) (test 2 numerator 2/3)
(test 3 denominator 2/3) (test 3 denominator 2/3)
(test 1000.0 round (* 10000.0 (/ (numerator 0.1) (denominator 0.1)))) (test 1000.0 round (* 10000.0 (/ (numerator 0.1) (denominator 0.1))))
(test +inf.0 numerator +inf.0) (err/rt-test (numerator +inf.0))
(test -inf.0 numerator -inf.0) (err/rt-test (numerator -inf.0))
(test-nan.0 numerator +nan.0) (err/rt-test (numerator +nan.0))
(test 1.0 denominator +inf.0) (err/rt-test (denominator +inf.0))
(test 1.0 denominator -inf.0) (err/rt-test (denominator -inf.0))
(test-nan.0 denominator +nan.0) (err/rt-test (denominator +nan.0))
(err/rt-test (numerator 'a)) (err/rt-test (numerator 'a))
(err/rt-test (numerator 1+2i)) (err/rt-test (numerator 1+2i))
@ -1312,8 +1320,8 @@
(test 1+2i make-rectangular 1 2) (test 1+2i make-rectangular 1 2)
(test 1.0+2.0i make-rectangular 1.0 2) (test 1.0+2.0i make-rectangular 1.0 2)
(test 1.0+2.0i make-rectangular 1.0+0.0i 2) (err/rt-test (make-rectangular 1.0+0.0i 2))
(test 1.0+2.0i make-rectangular 1.0 2+0.0i) (err/rt-test (make-rectangular 1.0 2+0.0i))
(test-nan.0 real-part (make-rectangular +nan.0 1)) (test-nan.0 real-part (make-rectangular +nan.0 1))
(test 1.0 imag-part (make-rectangular +nan.0 1)) (test 1.0 imag-part (make-rectangular +nan.0 1))
(test-nan.0 imag-part (make-rectangular 1 +nan.0)) (test-nan.0 imag-part (make-rectangular 1 +nan.0))
@ -1414,8 +1422,8 @@
(test 1.0+0.0i make-polar 1 0.0) (test 1.0+0.0i make-polar 1 0.0)
(test 1.0 make-polar 1.0 0) (test 1.0 make-polar 1.0 0)
(test 1.0+0.0i make-polar 1.0 0.0) (test 1.0+0.0i make-polar 1.0 0.0)
(test 1.0+0.0i make-polar 1.0 0.0+0.0i) (err/rt-test (make-polar 1.0 0.0+0.0i))
(test 1.0+0.0i make-polar 1.0+0.0i 0.0) (err/rt-test (make-polar 1.0+0.0i 0.0))
(let ([v (make-polar 1 1)]) (let ([v (make-polar 1 1)])
(test 5403.0 floor (* 10000 (real-part v))) (test 5403.0 floor (* 10000 (real-part v)))
(test 84147.0 floor (* 100000 (imag-part v))) (test 84147.0 floor (* 100000 (imag-part v)))
@ -1508,8 +1516,8 @@
(test 2.0 integer-sqrt 5.0) (test 2.0 integer-sqrt 5.0)
(test 0+2.0i integer-sqrt -5.0) (test 0+2.0i integer-sqrt -5.0)
(test 2.0+0.0i integer-sqrt 5.0+0.0i) (err/rt-test (integer-sqrt 5.0+0.0i))
(test 0+2.0i integer-sqrt -5.0+0.0i) (err/rt-test (integer-sqrt -5.0+0.0i))
(err/rt-test (integer-sqrt "a")) (err/rt-test (integer-sqrt "a"))
(err/rt-test (integer-sqrt 1.1)) (err/rt-test (integer-sqrt 1.1))
@ -1525,8 +1533,8 @@
(test '(2.0 1.0) call-with-values (lambda () (integer-sqrt/remainder 5.0)) list) (test '(2.0 1.0) call-with-values (lambda () (integer-sqrt/remainder 5.0)) list)
(test '(0+2.0i -1.0) call-with-values (lambda () (integer-sqrt/remainder -5.0)) list) (test '(0+2.0i -1.0) call-with-values (lambda () (integer-sqrt/remainder -5.0)) list)
(test '(2.0+0.0i 1.0+0.0i) call-with-values (lambda () (integer-sqrt/remainder 5.0+0.0i)) list) (err/rt-test (integer-sqrt/remainder 5.0+0.0i))
(test '(0+2.0i -1.0+0.0i) call-with-values (lambda () (integer-sqrt/remainder -5.0+0.0i)) list) (err/rt-test (integer-sqrt/remainder -5.0+0.0i))
(err/rt-test (integer-sqrt/remainder "a")) (err/rt-test (integer-sqrt/remainder "a"))
(err/rt-test (integer-sqrt/remainder 1.1)) (err/rt-test (integer-sqrt/remainder 1.1))
@ -1672,24 +1680,24 @@
(test 125.0d0 round (* 1000 (magnitude (asin (sin 0.125+0.0d0i))))) (test 125.0d0 round (* 1000 (magnitude (asin (sin 0.125+0.0d0i)))))
(test 125.0 round (* 1000 (asin (sin 1/8)))) (test 125.0 round (* 1000 (asin (sin 1/8))))
(test 125.0 round (* 1000 (acos (cos 0.125)))) (test 125.0 round (* 1000 (acos (cos 0.125))))
(test 125.0d0 round (* 1000 (acos (cos 0.125+0.0d0i)))) (test 125.0d0-0.0i z-round (* 1000 (acos (cos 0.125+0.0d0i))))
(test 125.0 round (* 1000 (acos (cos 1/8)))) (test 125.0 round (* 1000 (acos (cos 1/8))))
(test 785.0 round (* 1000 (atan 1 1))) (test 785.0 round (* 1000 (atan 1 1)))
(test 785.0 round (* 1000 (atan 1.0 1.0))) (test 785.0 round (* 1000 (atan 1.0 1.0)))
(test 785.0 round (* 1000 (atan 1.0 1.0+0.0i))) (err/rt-test (atan 1.0 1.0+0.0i))
(test 785.0 round (* 1000 (atan 1.0+0.0i 1.0))) (err/rt-test (atan 1.0+0.0i 1.0))
(test 2356.0 round (* 1000 (atan 1 -1))) (test 2356.0 round (* 1000 (atan 1 -1)))
(test -785.0 round (* 1000 (atan -1 1))) (test -785.0 round (* 1000 (atan -1 1)))
(test 785.0 round (* 1000 (atan 1))) (test 785.0 round (* 1000 (atan 1)))
(test 100.0 round (* 100 (tan (atan 1)))) (test 100.0 round (* 100 (tan (atan 1))))
(test 100.0 round (* 100 (tan (+ +0.0i (atan 1))))) (test 100.0-0.0i z-round (* 100 (tan (+ +0.0i (atan 1)))))
(test 0.0 atan 0.0 0) (test 0.0 atan 0.0 0)
(err/rt-test (atan 0 0) exn:fail:contract:divide-by-zero?) (err/rt-test (atan 0 0) exn:fail:contract:divide-by-zero?)
(test 1024.0 round (expt 2.0 10.0)) (test 1024.0 round (expt 2.0 10.0))
(test 1024.0 round (expt -2.0 10.0)) (test 1024.0 round (expt -2.0 10.0))
(test -512.0 round (expt -2.0 9.0)) (test -512.0 round (expt -2.0 9.0))
(test 32.0 round (sqrt 1024.0)) (test 32.0 round (sqrt 1024.0))
(test 32.0 round (sqrt 1024.0+0.0i)) (test 32.0+0.0i z-round (sqrt 1024.0+0.0i))
(test 1.0+1.5e-10i sqrt 1+3e-10i) (test 1.0+1.5e-10i sqrt 1+3e-10i)
(test 1 exp 0) (test 1 exp 0)
@ -1701,6 +1709,10 @@
(test 0.0 log 1.0) (test 0.0 log 1.0)
(test -inf.0 log 0.0) (test -inf.0 log 0.0)
(test -inf.0 log -0.0) (test -inf.0 log -0.0)
(test +inf.0 log +inf.0)
(test +inf.0 real-part (log -inf.0))
(test +3142.0 round (* 1000 (imag-part (log -inf.0))))
(test +nan.0 log +nan.0)
(err/rt-test (log 0) exn:fail:contract:divide-by-zero?) (err/rt-test (log 0) exn:fail:contract:divide-by-zero?)
(test 1 cos 0) (test 1 cos 0)
@ -1731,6 +1743,8 @@
(test 314.0 round (* 200 (acos 0))) (test 314.0 round (* 200 (acos 0)))
(test 314.0 round (* 200 (acos 0.0))) (test 314.0 round (* 200 (acos 0.0)))
(test 314.0 round (* 200 (acos -0.0))) (test 314.0 round (* 200 (acos -0.0)))
(test (/ 314.0 2) round (* 100 (atan +inf.0)))
(test (/ -314.0 2) round (* 100 (atan -inf.0)))
(test 71034.0 round (* 100 (log 312918491891666147403524564598095080760332972643192197862041633988540637438735086398143104076897116667450730097183397289314559387355872839339937813881411504027225774279272518360586167057501686099965513263132778526566297754301647311975918380842568054630540214544682491386730004162058539391336047825248736472519))) (test 71034.0 round (* 100 (log 312918491891666147403524564598095080760332972643192197862041633988540637438735086398143104076897116667450730097183397289314559387355872839339937813881411504027225774279272518360586167057501686099965513263132778526566297754301647311975918380842568054630540214544682491386730004162058539391336047825248736472519)))
(test 71117.0 round (* 100 (log (expt 2 1026)))) (test 71117.0 round (* 100 (log (expt 2 1026))))
@ -1832,8 +1846,8 @@
(test 1/3 rationalize 3/10 -1/10) (test 1/3 rationalize 3/10 -1/10)
(test 0 rationalize 3/10 4/10) (test 0 rationalize 3/10 4/10)
(test 0.0 rationalize .3 4/10) (test 0.0 rationalize .3 4/10)
(test 0.0 rationalize .3+0.0i 4/10) (err/rt-test (rationalize .3+0.0i 4/10))
(test #i1/3 rationalize .3+0.0i 1/10) (err/rt-test (rationalize .3+0.0i 1/10))
(define (test-rat-inf v) (define (test-rat-inf v)
(define zero (if (exact? v) 0 0.0)) (define zero (if (exact? v) 0 0.0))
@ -2587,8 +2601,8 @@
(define (there-and-back n) (define (there-and-back n)
(floating-point-bytes->real (real->floating-point-bytes n 8))) (floating-point-bytes->real (real->floating-point-bytes n 8)))
(test 1.0 there-and-back 1.0+0.0i) (err/rt-test (there-and-back 1.0+0.0i))
(test 100.0 there-and-back 100.0+0.0i) (err/rt-test (there-and-back 100.0+0.0i))
(test 101.0 there-and-back 101) (test 101.0 there-and-back 101)
(test 1e30 there-and-back 1000000000000000000000000000000) (test 1e30 there-and-back 1000000000000000000000000000000)
(test 0.5 there-and-back 1/2) (test 0.5 there-and-back 1/2)

View File

@ -101,6 +101,10 @@ but we start with an enumeration of changes:
when given a cyclic value, and non-cyclic graph structure (though when given a cyclic value, and non-cyclic graph structure (though
pairs, vectors, and boxes) is not preserved. pairs, vectors, and boxes) is not preserved.
- Complex numbers with inexact-zero imaginary parts are no longer
considered real (or rational), and +inf.0, -inf.0, and +nan.0 are
no longer considered rational (or integers).
- In fully expanded code, `#%datum' expands to `quote'. When using - In fully expanded code, `#%datum' expands to `quote'. When using
the `mzscheme' language, beware that `if' in expansions is the `if' the `mzscheme' language, beware that `if' in expansions is the `if'
of `scheme/base'. When using the `scheme/base' language, beware of `scheme/base'. When using the `scheme/base' language, beware

View File

@ -0,0 +1,34 @@
#if defined(MZ_PRECISE_GC) && !defined(USE_COMPACT_3M_GC)
#ifdef _WIN32
# define LOG_APAGE_SIZE 16
#else
# define LOG_APAGE_SIZE 14
#endif
#ifdef SIXTY_FOUR_BIT_INTEGERS
# define OBJH_WORD_SIZE 8
#else
# define OBJH_WORD_SIZE 4
#endif
struct objhead {
unsigned long hash : ((8*OBJH_WORD_SIZE) - (4+3+LOG_APAGE_SIZE));
/* the type and size of the object */
unsigned long type : 3;
/* these are the various mark bits we use */
unsigned long mark : 1;
unsigned long btc_mark : 1;
/* these are used for compaction et al*/
unsigned long moved : 1;
unsigned long dead : 1;
unsigned long size : LOG_APAGE_SIZE;
};
XFORM_NONGCING extern int GC_is_allocated(void *p);
#define OBJHEAD_HAS_HASH_BITS
#define OBJHEAD_HASH_BITS(p) ((struct objhead *)((void **)p - 1))->hash
#endif

View File

@ -98,11 +98,8 @@
/* This is the log base 2 of the standard memory page size. 14 means 2^14, /* This is the log base 2 of the standard memory page size. 14 means 2^14,
which is 16k. This seems to be a good size for most platforms. which is 16k. This seems to be a good size for most platforms.
Under Windows as of 2008, however, the allocation granularity is 64k. */ Under Windows as of 2008, however, the allocation granularity is 64k. */
#ifdef _WIN32 /* # define LOG_APAGE_SIZE ... see gc2_obj.h */
# define LOG_APAGE_SIZE 16 #include "gc2_obj.h"
#else
# define LOG_APAGE_SIZE 14
#endif
/* the number of tags to use for tagged objects */ /* the number of tags to use for tagged objects */
#define NUMBER_OF_TAGS 512 #define NUMBER_OF_TAGS 512
@ -214,18 +211,7 @@ int GC_mtrace_union_current_with(int newval)
/* Allocation */ /* Allocation */
/*****************************************************************************/ /*****************************************************************************/
struct objhead { /* struct objhead is defined in gc2_obj.h */
unsigned long reserved : ((8*WORD_SIZE) - (4+3+LOG_APAGE_SIZE));
/* the type and size of the object */
unsigned long type : 3;
/* these are the various mark bits we use */
unsigned long mark : 1;
unsigned long btc_mark : 1;
/* these are used for compaction et al*/
unsigned long moved : 1;
unsigned long dead : 1;
unsigned long size : LOG_APAGE_SIZE;
};
struct mpage { struct mpage {
struct mpage *next, *prev; struct mpage *next, *prev;
@ -389,6 +375,11 @@ inline static struct mpage *find_page(void *p)
return page_map[ADDR_BITS(p)]; return page_map[ADDR_BITS(p)];
} }
int GC_is_allocated(void *p)
{
return !!find_page(p);
}
static size_t round_to_apage_size(size_t sizeb) static size_t round_to_apage_size(size_t sizeb)
{ {
sizeb += APAGE_SIZE - 1; sizeb += APAGE_SIZE - 1;

View File

@ -378,11 +378,10 @@ typedef long (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj, void *cycle_data)
#endif #endif
#define SCHEME_BIGNUMP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_bignum_type) #define SCHEME_BIGNUMP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_bignum_type)
#define SCHEME_RATIONALP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_rational_type) #define SCHEME_RATIONALP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_rational_type)
#define SCHEME_COMPLEXP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) >= scheme_complex_izi_type) && (_SCHEME_TYPE(obj) <= scheme_complex_type))) #define SCHEME_COMPLEXP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) == scheme_complex_type)))
#define SCHEME_COMPLEX_IZIP(obj) (SCHEME_TYPE(obj) == scheme_complex_izi_type)
#define SCHEME_EXACT_INTEGERP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type)) #define SCHEME_EXACT_INTEGERP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type))
#define SCHEME_EXACT_REALP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type) || (_SCHEME_TYPE(obj) == scheme_rational_type)) #define SCHEME_EXACT_REALP(obj) (SCHEME_INTP(obj) || (_SCHEME_TYPE(obj) == scheme_bignum_type) || (_SCHEME_TYPE(obj) == scheme_rational_type))
#define SCHEME_REALP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) <= scheme_complex_izi_type))) #define SCHEME_REALP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) < scheme_complex_type)))
#define SCHEME_NUMBERP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) <= scheme_complex_type))) #define SCHEME_NUMBERP(obj) (SCHEME_INTP(obj) || ((_SCHEME_TYPE(obj) >= scheme_bignum_type) && (_SCHEME_TYPE(obj) <= scheme_complex_type)))
#define SCHEME_CHAR_STRINGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_char_string_type) #define SCHEME_CHAR_STRINGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_char_string_type)

View File

@ -204,7 +204,7 @@ int scheme_eqv (Scheme_Object *obj1, Scheme_Object *obj2)
return scheme_bignum_eq(obj1, obj2); return scheme_bignum_eq(obj1, obj2);
else if (t1 == scheme_rational_type) else if (t1 == scheme_rational_type)
return scheme_rational_eq(obj1, obj2); return scheme_rational_eq(obj1, obj2);
else if ((t1 == scheme_complex_type) || (t1 == scheme_complex_izi_type)) { else if (t1 == scheme_complex_type) {
Scheme_Complex *c1 = (Scheme_Complex *)obj1; Scheme_Complex *c1 = (Scheme_Complex *)obj1;
Scheme_Complex *c2 = (Scheme_Complex *)obj2; Scheme_Complex *c2 = (Scheme_Complex *)obj2;
return scheme_eqv(c1->r, c2->r) && scheme_eqv(c1->i, c2->i); return scheme_eqv(c1->r, c2->r) && scheme_eqv(c1->i, c2->i);

View File

@ -87,17 +87,7 @@ Scheme_Object *scheme_complex_normalize(const Scheme_Object *o)
if (c->i == zero) if (c->i == zero)
return c->r; return c->r;
if (c->r == zero) { if (c->r == zero) {
/* No coercions, but check izi type */ /* No coercions */
if (SCHEME_DBLP(c->i)) {
if (SCHEME_DBL_VAL(c->i) == 0.0)
c->so.type = scheme_complex_izi_type;
}
#ifdef MZ_USE_SINGLE_FLOATS
if (SCHEME_FLTP(c->i)) {
if (SCHEME_FLT_VAL(c->i) == 0.0f)
c->so.type = scheme_complex_izi_type;
}
#endif
return (Scheme_Object *)c; return (Scheme_Object *)c;
} }
@ -107,8 +97,6 @@ Scheme_Object *scheme_complex_normalize(const Scheme_Object *o)
r = scheme_make_double(scheme_get_val_as_double(c->r)); r = scheme_make_double(scheme_get_val_as_double(c->r));
c->r = r; c->r = r;
} }
if (SCHEME_DBL_VAL(c->i) == 0.0)
c->so.type = scheme_complex_izi_type;
} else if (SCHEME_DBLP(c->r)) { } else if (SCHEME_DBLP(c->r)) {
Scheme_Object *i; Scheme_Object *i;
i = scheme_make_double(scheme_get_val_as_double(c->i)); i = scheme_make_double(scheme_get_val_as_double(c->i));
@ -120,16 +108,9 @@ Scheme_Object *scheme_complex_normalize(const Scheme_Object *o)
if (!SCHEME_FLTP(c->r)) { if (!SCHEME_FLTP(c->r)) {
if (SCHEME_DBLP(c->r)) { if (SCHEME_DBLP(c->r)) {
c->i = scheme_make_double(SCHEME_FLT_VAL(c->i)); c->i = scheme_make_double(SCHEME_FLT_VAL(c->i));
if (SCHEME_DBL_VAL(c->i) == 0.0)
c->so.type = scheme_complex_izi_type;
} else { } else {
c->r = scheme_make_float(scheme_get_val_as_float(c->r)); c->r = scheme_make_float(scheme_get_val_as_float(c->r));
if (SCHEME_FLT_VAL(c->i) == 0.0f)
c->so.type = scheme_complex_izi_type;
} }
} else {
if (SCHEME_FLT_VAL(c->i) == 0.0f)
c->so.type = scheme_complex_izi_type;
} }
} }
#endif #endif
@ -355,6 +336,15 @@ Scheme_Object *scheme_complex_sqrt(const Scheme_Object *o)
r = c->r; r = c->r;
i = c->i; i = c->i;
if (scheme_is_zero(i)) {
/* Special case for x+0.0i: */
r = scheme_sqrt(1, &r);
if (!SCHEME_COMPLEXP(r))
return scheme_make_complex(r, i);
else
return r;
}
ssq = scheme_bin_plus(scheme_bin_mult(r, r), ssq = scheme_bin_plus(scheme_bin_mult(r, r),
scheme_bin_mult(i, i)); scheme_bin_mult(i, i));

View File

@ -1,106 +1,106 @@
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,50,0,0,0,1,0,0,6,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,54,50,0,0,0,1,0,0,6,0,
9,0,14,0,18,0,23,0,28,0,32,0,39,0,52,0,55,0,62,0,69, 9,0,13,0,18,0,25,0,32,0,37,0,42,0,46,0,59,0,66,0,69,
0,78,0,84,0,98,0,112,0,115,0,119,0,121,0,132,0,134,0,148,0, 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,253,0,23,1,32,1,41,1,51,1,68,1,107, 155,0,177,0,179,0,193,0,253,0,23,1,32,1,41,1,51,1,68,1,107,
1,146,1,215,1,4,2,92,2,137,2,142,2,162,2,53,3,73,3,124,3, 1,146,1,215,1,4,2,92,2,137,2,142,2,162,2,53,3,73,3,124,3,
190,3,75,4,233,4,20,5,31,5,110,5,0,0,131,7,0,0,65,98,101, 190,3,75,4,233,4,20,5,31,5,110,5,0,0,131,7,0,0,65,98,101,
103,105,110,29,11,11,64,108,101,116,42,63,108,101,116,64,119,104,101,110,64, 103,105,110,29,11,11,63,108,101,116,64,99,111,110,100,66,117,110,108,101,115,
99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,72,112,97,114,97,109, 115,66,100,101,102,105,110,101,64,119,104,101,110,64,108,101,116,42,63,97,110,
101,116,101,114,105,122,101,62,111,114,66,100,101,102,105,110,101,66,117,110,108, 100,72,112,97,114,97,109,101,116,101,114,105,122,101,66,108,101,116,114,101,99,
101,115,115,68,104,101,114,101,45,115,116,120,65,113,117,111,116,101,29,94,2, 62,111,114,68,104,101,114,101,45,115,116,120,65,113,117,111,116,101,29,94,2,
14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37,112,97,114, 14,68,35,37,107,101,114,110,101,108,11,29,94,2,14,68,35,37,112,97,114,
97,109,122,11,62,105,102,63,115,116,120,61,115,70,108,101,116,45,118,97,108, 97,109,122,11,62,105,102,63,115,116,120,61,115,70,108,101,116,45,118,97,108,
117,101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108, 117,101,115,61,120,73,108,101,116,114,101,99,45,118,97,108,117,101,115,66,108,
97,109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105, 97,109,98,100,97,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
111,110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101, 111,110,45,107,101,121,61,118,73,100,101,102,105,110,101,45,118,97,108,117,101,
115,98,10,34,11,8,143,183,94,159,2,16,34,34,159,2,15,34,34,16,20, 115,98,10,34,11,8,143,183,94,159,2,16,34,34,159,2,15,34,34,16,20,
2,10,2,2,2,3,2,2,2,4,2,2,2,5,2,2,2,6,2,2,2, 2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2,
7,2,2,2,9,2,2,2,8,2,2,2,11,2,2,2,12,2,2,97,35, 9,2,2,2,4,2,2,2,10,2,2,2,11,2,2,2,12,2,2,97,35,
11,8,143,183,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2, 11,8,143,183,93,159,2,15,34,35,16,2,2,13,161,2,2,35,2,13,2,
2,2,13,97,10,11,11,8,143,183,16,0,97,10,36,11,8,143,183,16,0, 2,2,13,97,10,11,11,8,143,183,16,0,97,10,36,11,8,143,183,16,0,
13,16,4,34,29,11,11,2,2,11,18,98,64,104,101,114,101,8,31,8,30, 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,178,3,23,196,1,249,22,171,3,80,158,37, 8,29,8,28,8,27,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37,
34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90, 34,251,22,73,2,17,248,22,88,23,200,2,12,249,22,63,2,1,248,22,90,
23,202,1,27,248,22,178,3,23,196,1,249,22,171,3,80,158,37,34,251,22, 23,202,1,27,248,22,180,3,23,196,1,249,22,173,3,80,158,37,34,251,22,
73,2,17,248,22,88,23,200,2,249,22,63,2,1,248,22,90,23,202,1,12, 73,2,17,248,22,88,23,200,2,249,22,63,2,1,248,22,90,23,202,1,12,
27,248,22,65,248,22,178,3,23,197,1,28,248,22,71,23,194,2,20,15,159, 27,248,22,65,248,22,180,3,23,197,1,28,248,22,71,23,194,2,20,15,159,
35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,171,3, 35,34,35,28,248,22,71,248,22,65,23,195,2,248,22,64,193,249,22,173,3,
80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,7,248, 80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,9,248,
22,65,23,202,1,11,18,100,10,8,31,8,30,8,29,8,28,8,27,16,4, 22,65,23,202,1,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,55,50,49,49,16,4,11,11,2,19,3, 11,11,2,18,3,1,7,101,110,118,55,50,49,49,16,4,11,11,2,19,3,
1,7,101,110,118,55,50,49,50,27,248,22,65,248,22,178,3,23,197,1,28, 1,7,101,110,118,55,50,49,50,27,248,22,65,248,22,180,3,23,197,1,28,
248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195, 248,22,71,23,194,2,20,15,159,35,34,35,28,248,22,71,248,22,65,23,195,
2,248,22,64,193,249,22,171,3,80,158,37,34,250,22,73,2,20,248,22,73, 2,248,22,64,193,249,22,173,3,80,158,37,34,250,22,73,2,20,248,22,73,
249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21, 249,22,73,248,22,73,2,21,248,22,64,23,202,2,251,22,73,2,17,2,21,
2,21,249,22,63,2,10,248,22,65,23,205,1,18,100,11,8,31,8,30,8, 2,21,249,22,63,2,12,248,22,65,23,205,1,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,55,50,49,52, 29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,49,52,
16,4,11,11,2,19,3,1,7,101,110,118,55,50,49,53,248,22,178,3,193, 16,4,11,11,2,19,3,1,7,101,110,118,55,50,49,53,248,22,180,3,193,
27,248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27, 27,248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,
248,22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,28,248,22, 248,22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,28,248,22,
51,248,22,172,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44, 51,248,22,174,3,248,22,64,23,198,2,27,249,22,2,32,0,89,162,8,44,
35,41,9,222,33,39,248,22,178,3,248,22,88,23,200,2,250,22,73,2,22, 35,41,9,222,33,39,248,22,180,3,248,22,88,23,200,2,250,22,73,2,22,
248,22,73,249,22,73,248,22,73,248,22,64,23,204,2,250,22,74,2,23,249, 248,22,73,249,22,73,248,22,73,248,22,64,23,204,2,250,22,74,2,23,249,
22,2,22,64,23,204,2,248,22,90,23,206,2,249,22,63,248,22,64,23,202, 22,2,22,64,23,204,2,248,22,90,23,206,2,249,22,63,248,22,64,23,202,
1,249,22,2,22,88,23,200,1,250,22,74,2,20,249,22,2,32,0,89,162, 1,249,22,2,22,88,23,200,1,250,22,74,2,20,249,22,2,32,0,89,162,
8,44,35,45,9,222,33,40,248,22,178,3,248,22,64,201,248,22,65,198,27, 8,44,35,45,9,222,33,40,248,22,180,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, 248,22,180,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248,
22,65,248,22,178,3,23,197,1,249,22,171,3,80,158,37,34,250,22,74,2, 22,65,248,22,180,3,23,197,1,249,22,173,3,80,158,37,34,250,22,74,2,
22,249,22,2,32,0,89,162,8,44,35,45,9,222,33,42,248,22,178,3,248, 22,249,22,2,32,0,89,162,8,44,35,45,9,222,33,42,248,22,180,3,248,
22,64,201,248,22,65,198,27,248,22,65,248,22,178,3,196,27,248,22,178,3, 22,64,201,248,22,65,198,27,248,22,65,248,22,180,3,196,27,248,22,180,3,
248,22,64,195,249,22,171,3,80,158,38,34,28,248,22,71,195,250,22,74,2, 248,22,64,195,249,22,173,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, 20,9,248,22,65,199,250,22,73,2,3,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,178,3,23,197,1, 2,8,248,22,65,201,248,22,65,202,27,248,22,65,248,22,180,3,23,197,1,
27,249,22,1,22,77,249,22,2,22,178,3,248,22,178,3,248,22,64,199,249, 27,249,22,1,22,77,249,22,2,22,180,3,248,22,180,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, 22,173,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, 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, 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, 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, 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,178,3,23,197,1,28,248,22,71,23,194, 248,22,65,203,27,248,22,65,248,22,180,3,23,197,1,28,248,22,71,23,194,
2,20,15,159,35,34,35,249,22,171,3,80,158,37,34,27,248,22,178,3,248, 2,20,15,159,35,34,35,249,22,173,3,80,158,37,34,27,248,22,180,3,248,
22,64,23,198,2,28,249,22,138,8,62,61,62,248,22,172,3,248,22,88,23, 22,64,23,198,2,28,249,22,140,8,62,61,62,248,22,174,3,248,22,88,23,
197,2,250,22,73,2,20,248,22,73,249,22,73,21,93,2,25,248,22,64,199, 197,2,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, 250,22,74,2,4,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,138,8,248,22,172,3,248,22,64,23,201, 65,202,251,22,73,2,17,28,249,22,140,8,248,22,174,3,248,22,64,23,201,
2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22, 2,64,101,108,115,101,10,248,22,64,23,198,2,250,22,74,2,20,9,248,22,
65,23,201,1,249,22,63,2,6,248,22,65,23,203,1,99,8,31,8,30,8, 65,23,201,1,249,22,63,2,4,248,22,65,23,203,1,99,8,31,8,30,8,
29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,51,55, 29,8,28,8,27,16,4,11,11,2,18,3,1,7,101,110,118,55,50,51,55,
16,4,11,11,2,19,3,1,7,101,110,118,55,50,51,56,18,158,94,10,64, 16,4,11,11,2,19,3,1,7,101,110,118,55,50,51,56,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, 118,111,105,100,8,47,27,248,22,65,248,22,180,3,196,249,22,173,3,80,158,
37,34,28,248,22,51,248,22,172,3,248,22,64,197,250,22,73,2,26,248,22, 37,34,28,248,22,51,248,22,174,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, 73,248,22,64,199,248,22,88,198,27,248,22,174,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, 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,103,159,34,16,1,20,24,2,1,16,0,83,158,40,20,100,137, 202,159,34,20,102,159,34,16,1,20,24,2,1,16,0,83,158,40,20,99,137,
69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,34,80,158,34,34,20, 69,35,37,109,105,110,45,115,116,120,2,2,10,11,10,34,80,158,34,34,20,
103,159,34,16,0,16,0,11,11,16,0,34,11,37,34,11,16,10,9,9,9, 102,159,34,16,0,16,0,11,11,16,0,34,11,37,34,11,16,10,9,9,9,
9,9,9,9,9,9,9,16,10,2,3,2,4,2,5,2,6,2,7,2,8, 9,9,9,9,9,9,9,16,10,2,3,2,4,2,5,2,6,2,7,2,8,
2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16, 2,9,2,10,2,11,2,12,16,10,11,11,11,11,11,11,11,11,11,11,16,
10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12, 10,2,3,2,4,2,5,2,6,2,7,2,8,2,9,2,10,2,11,2,12,
34,44,35,11,11,16,0,16,0,16,0,34,34,11,11,11,16,0,16,0,16, 34,44,35,11,11,16,0,16,0,16,0,34,34,11,11,11,16,0,16,0,16,
0,34,34,16,11,16,5,93,2,13,20,15,159,34,34,34,34,20,103,159,34, 0,34,34,16,11,16,5,93,2,13,20,15,159,34,34,34,34,20,102,159,34,
16,0,16,1,33,32,10,16,5,93,2,12,89,162,8,44,35,51,9,223,0, 16,0,16,1,33,32,10,16,5,93,2,5,89,162,8,44,35,51,9,223,0,
33,33,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16, 33,33,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,
5,93,2,5,89,162,8,44,35,51,9,223,0,33,34,34,20,103,159,34,16, 5,93,2,7,89,162,8,44,35,51,9,223,0,33,34,34,20,102,159,34,16,
1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,7,89,162,8,44, 1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,9,89,162,8,44,
35,51,9,223,0,33,35,34,20,103,159,34,16,1,20,25,159,35,2,2,2, 35,51,9,223,0,33,35,34,20,102,159,34,16,1,20,25,159,35,2,2,2,
13,16,1,33,36,11,16,5,93,2,10,89,162,8,44,35,54,9,223,0,33, 13,16,1,33,36,11,16,5,93,2,12,89,162,8,44,35,54,9,223,0,33,
37,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,1,33,38,11, 37,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,1,33,38,11,
16,5,93,2,4,89,162,8,44,35,56,9,223,0,33,41,34,20,103,159,34, 16,5,93,2,3,89,162,8,44,35,56,9,223,0,33,41,34,20,102,159,34,
16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,8,89,162,8, 16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,11,89,162,8,
44,35,51,9,223,0,33,43,34,20,103,159,34,16,1,20,25,159,35,2,2, 44,35,51,9,223,0,33,43,34,20,102,159,34,16,1,20,25,159,35,2,2,
2,13,16,0,11,16,5,93,2,3,89,162,8,44,35,52,9,223,0,33,44, 2,13,16,0,11,16,5,93,2,8,89,162,8,44,35,52,9,223,0,33,44,
34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93, 34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,
2,9,89,162,8,44,35,53,9,223,0,33,45,34,20,103,159,34,16,1,20, 2,10,89,162,8,44,35,53,9,223,0,33,45,34,20,102,159,34,16,1,20,
25,159,35,2,2,2,13,16,0,11,16,5,93,2,6,89,162,8,44,35,56, 25,159,35,2,2,2,13,16,0,11,16,5,93,2,4,89,162,8,44,35,56,
9,223,0,33,46,34,20,103,159,34,16,1,20,25,159,35,2,2,2,13,16, 9,223,0,33,46,34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,
1,33,48,11,16,5,93,2,11,89,162,8,44,35,52,9,223,0,33,49,34, 1,33,48,11,16,5,93,2,6,89,162,8,44,35,52,9,223,0,33,49,34,
20,103,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,0,94,2, 20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,0,94,2,
15,2,16,93,2,15,9,9,34,0}; 15,2,16,93,2,15,9,9,34,0};
EVAL_ONE_SIZED_STR((char *)expr, 2046); EVAL_ONE_SIZED_STR((char *)expr, 2046);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,61,0,0,0,1,0,0,3,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,54,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, 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, 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,77,2,167,3,176,3,217, 112,1,157,1,202,1,226,1,9,2,11,2,20,2,77,2,167,3,176,3,217,
@ -133,175 +133,175 @@
99,97,110,110,111,116,32,97,100,100,32,97,32,115,117,102,102,105,120,32,116, 99,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, 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, 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,138,12,10,248,22,186,4,23,196,2,28,248,22,164,5, 11,80,158,40,49,22,140,12,10,248,22,188,4,23,196,2,28,248,22,166,5,
23,194,2,12,87,94,248,22,141,8,23,194,1,248,80,159,36,53,35,195,28, 23,194,2,12,87,94,248,22,143,8,23,194,1,248,80,159,36,53,35,195,28,
248,22,71,23,195,2,9,27,248,22,64,23,196,2,27,28,248,22,183,12,23, 248,22,71,23,195,2,9,27,248,22,64,23,196,2,27,28,248,22,185,12,23,
195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,12,23,196,1,250, 195,2,23,194,1,28,248,22,184,12,23,195,2,249,22,186,12,23,196,1,250,
80,158,41,47,248,22,134,13,2,20,11,10,250,80,158,39,47,248,22,134,13, 80,158,41,47,248,22,136,13,2,20,11,10,250,80,158,39,47,248,22,136,13,
2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,186,12,249,22,184,12, 2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,188,12,249,22,186,12,
23,198,1,247,22,135,13,27,248,22,65,23,200,1,28,248,22,71,23,194,2, 23,198,1,247,22,137,13,27,248,22,65,23,200,1,28,248,22,71,23,194,2,
9,27,248,22,64,23,195,2,27,28,248,22,183,12,23,195,2,23,194,1,28, 9,27,248,22,64,23,195,2,27,28,248,22,185,12,23,195,2,23,194,1,28,
248,22,182,12,23,195,2,249,22,184,12,23,196,1,250,80,158,46,47,248,22, 248,22,184,12,23,195,2,249,22,186,12,23,196,1,250,80,158,46,47,248,22,
134,13,2,20,11,10,250,80,158,44,47,248,22,134,13,2,20,23,197,1,10, 136,13,2,20,11,10,250,80,158,44,47,248,22,136,13,2,20,23,197,1,10,
28,23,193,2,249,22,63,248,22,186,12,249,22,184,12,23,198,1,247,22,135, 28,23,193,2,249,22,63,248,22,188,12,249,22,186,12,23,198,1,247,22,137,
13,248,80,159,44,52,35,248,22,65,23,199,1,87,94,23,193,1,248,80,159, 13,248,80,159,44,52,35,248,22,65,23,199,1,87,94,23,193,1,248,80,159,
42,52,35,248,22,65,23,197,1,87,94,23,193,1,27,248,22,65,23,198,1, 42,52,35,248,22,65,23,197,1,87,94,23,193,1,27,248,22,65,23,198,1,
28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,183,12, 28,248,22,71,23,194,2,9,27,248,22,64,23,195,2,27,28,248,22,185,12,
23,195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,12,23,196,1, 23,195,2,23,194,1,28,248,22,184,12,23,195,2,249,22,186,12,23,196,1,
250,80,158,44,47,248,22,134,13,2,20,11,10,250,80,158,42,47,248,22,134, 250,80,158,44,47,248,22,136,13,2,20,11,10,250,80,158,42,47,248,22,136,
13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,186,12,249,22,184, 13,2,20,23,197,1,10,28,23,193,2,249,22,63,248,22,188,12,249,22,186,
12,23,198,1,247,22,135,13,248,80,159,42,52,35,248,22,65,23,199,1,248, 12,23,198,1,247,22,137,13,248,80,159,42,52,35,248,22,65,23,199,1,248,
80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,195,27,248,22, 80,159,40,52,35,248,22,65,196,249,80,159,36,37,35,2,7,195,27,248,22,
159,12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23, 161,12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,
195,2,27,248,22,181,12,195,28,192,192,248,22,182,12,195,11,87,94,28,28, 195,2,27,248,22,183,12,195,28,192,192,248,22,184,12,195,11,87,94,28,28,
248,22,160,12,23,195,2,10,27,248,22,159,12,23,196,2,28,23,193,2,192, 248,22,162,12,23,195,2,10,27,248,22,161,12,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,2, 87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,183,12,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,22, 28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,197,2,11,12,250,22,
168,8,76,110,111,114,109,97,108,45,112,97,116,104,45,99,97,115,101,6,42, 170,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, 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, 41,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,110,
103,23,197,2,28,28,248,22,160,12,23,195,2,249,22,138,8,248,22,161,12, 103,23,197,2,28,28,248,22,162,12,23,195,2,249,22,140,8,248,22,163,12,
23,197,2,2,21,249,22,138,8,247,22,152,7,2,21,27,28,248,22,133,6, 23,197,2,2,21,249,22,140,8,247,22,154,7,2,21,27,28,248,22,135,6,
23,196,2,23,195,2,248,22,142,7,248,22,164,12,23,197,2,28,249,22,147, 23,196,2,23,195,2,248,22,144,7,248,22,166,12,23,197,2,28,249,22,149,
13,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92, 13,0,21,35,114,120,34,94,91,92,92,93,91,92,92,93,91,63,93,91,92,
92,93,34,23,195,2,28,248,22,133,6,195,248,22,167,12,195,194,27,248,22, 92,93,34,23,195,2,28,248,22,135,6,195,248,22,169,12,195,194,27,248,22,
172,6,23,195,1,249,22,168,12,248,22,145,7,250,22,153,13,0,6,35,114, 174,6,23,195,1,249,22,170,12,248,22,147,7,250,22,155,13,0,6,35,114,
120,34,47,34,28,249,22,147,13,0,22,35,114,120,34,91,47,92,92,93,91, 120,34,47,34,28,249,22,149,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,23,201,2,23,199,1,250,22,153, 46,32,93,43,91,47,92,92,93,42,36,34,23,201,2,23,199,1,250,22,155,
13,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36, 13,0,19,35,114,120,34,91,32,46,93,43,40,91,47,92,92,93,42,41,36,
34,23,202,1,6,2,2,92,49,80,158,42,35,2,21,28,248,22,133,6,194, 34,23,202,1,6,2,2,92,49,80,158,42,35,2,21,28,248,22,135,6,194,
248,22,167,12,194,193,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2, 248,22,169,12,194,193,87,94,28,27,248,22,161,12,23,196,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197, 192,87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,183,12,23,197,
2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250, 2,28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,197,2,11,12,250,
22,168,8,23,196,2,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248, 22,170,8,23,196,2,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248,
22,183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,23,200,1,23, 22,185,10,249,22,130,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23,
201,1,247,22,23,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2,192, 201,1,247,22,23,87,94,28,27,248,22,161,12,23,196,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197,2, 87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,183,12,23,197,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250,22, 28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,197,2,11,12,250,22,
168,8,23,196,2,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248,22, 170,8,23,196,2,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248,22,
183,10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,23,200,1,23,201, 185,10,249,22,130,10,248,22,164,6,250,22,183,6,2,23,23,200,1,23,201,
1,247,22,23,87,94,87,94,28,27,248,22,159,12,23,196,2,28,23,193,2, 1,247,22,23,87,94,87,94,28,27,248,22,161,12,23,196,2,28,23,193,2,
192,87,94,23,193,1,28,248,22,133,6,23,196,2,27,248,22,181,12,23,197, 192,87,94,23,193,1,28,248,22,135,6,23,196,2,27,248,22,183,12,23,197,
2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,197,2,11,12,250, 2,28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,197,2,11,12,250,
22,168,8,195,2,22,23,197,2,28,248,22,181,12,23,195,2,12,248,22,183, 22,170,8,195,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248,22,185,
10,249,22,128,10,248,22,162,6,250,22,181,6,2,23,199,23,201,1,247,22, 10,249,22,130,10,248,22,164,6,250,22,183,6,2,23,199,23,201,1,247,22,
23,249,22,3,89,162,42,35,48,9,223,2,33,36,196,248,22,183,10,249,22, 23,249,22,3,89,162,42,35,48,9,223,2,33,36,196,248,22,185,10,249,22,
158,10,23,196,1,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195, 160,10,23,196,1,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, 249,22,3,80,159,36,51,35,196,251,80,159,38,40,35,2,7,32,0,89,162,
42,35,43,9,222,33,38,197,198,32,40,89,162,42,40,57,65,99,108,111,111, 42,35,43,9,222,33,38,197,198,32,40,89,162,42,40,57,65,99,108,111,111,
112,222,33,41,28,248,22,71,23,199,2,87,94,23,198,1,248,23,196,1,251, 112,222,33,41,28,248,22,71,23,199,2,87,94,23,198,1,248,23,196,1,251,
22,181,6,2,24,23,199,1,28,248,22,71,23,203,2,87,94,23,202,1,23, 22,183,6,2,24,23,199,1,28,248,22,71,23,203,2,87,94,23,202,1,23,
201,1,250,22,1,22,177,12,23,204,1,23,205,1,23,198,1,27,249,22,177, 201,1,250,22,1,22,179,12,23,204,1,23,205,1,23,198,1,27,249,22,179,
12,248,22,64,23,202,2,23,199,2,28,248,22,172,12,23,194,2,27,250,22, 12,248,22,64,23,202,2,23,199,2,28,248,22,174,12,23,194,2,27,250,22,
1,22,177,12,23,197,1,23,202,2,28,248,22,172,12,23,194,2,192,87,94, 1,22,179,12,23,197,1,23,202,2,28,248,22,174,12,23,194,2,192,87,94,
23,193,1,27,248,22,65,23,202,1,28,248,22,71,23,194,2,87,94,23,193, 23,193,1,27,248,22,65,23,202,1,28,248,22,71,23,194,2,87,94,23,193,
1,248,23,199,1,251,22,181,6,2,24,23,202,1,28,248,22,71,23,206,2, 1,248,23,199,1,251,22,183,6,2,24,23,202,1,28,248,22,71,23,206,2,
87,94,23,205,1,23,204,1,250,22,1,22,177,12,23,207,1,23,208,1,23, 87,94,23,205,1,23,204,1,250,22,1,22,179,12,23,207,1,23,208,1,23,
201,1,27,249,22,177,12,248,22,64,23,197,2,23,202,2,28,248,22,172,12, 201,1,27,249,22,179,12,248,22,64,23,197,2,23,202,2,28,248,22,174,12,
23,194,2,27,250,22,1,22,177,12,23,197,1,204,28,248,22,172,12,193,192, 23,194,2,27,250,22,1,22,179,12,23,197,1,204,28,248,22,174,12,193,192,
253,2,40,203,204,205,206,23,15,248,22,65,201,253,2,40,202,203,204,205,206, 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,87,94,23,193,1,27,248,22,65,23,201,1,28,248,22,71,23, 248,22,65,200,87,94,23,193,1,27,248,22,65,23,201,1,28,248,22,71,23,
194,2,87,94,23,193,1,248,23,198,1,251,22,181,6,2,24,23,201,1,28, 194,2,87,94,23,193,1,248,23,198,1,251,22,183,6,2,24,23,201,1,28,
248,22,71,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,177,12,23, 248,22,71,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,179,12,23,
206,1,23,207,1,23,200,1,27,249,22,177,12,248,22,64,23,197,2,23,201, 206,1,23,207,1,23,200,1,27,249,22,179,12,248,22,64,23,197,2,23,201,
2,28,248,22,172,12,23,194,2,27,250,22,1,22,177,12,23,197,1,203,28, 2,28,248,22,174,12,23,194,2,27,250,22,1,22,179,12,23,197,1,203,28,
248,22,172,12,193,192,253,2,40,202,203,204,205,206,248,22,65,201,253,2,40, 248,22,174,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,136,13,253,2,40,198,199,200,201, 201,202,203,204,205,248,22,65,200,27,247,22,138,13,253,2,40,198,199,200,201,
202,198,87,95,28,28,248,22,160,12,23,194,2,10,27,248,22,159,12,23,195, 202,198,87,95,28,28,248,22,162,12,23,194,2,10,27,248,22,161,12,23,195,
2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,195,2,27,248, 2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,195,2,27,248,
22,181,12,23,196,2,28,23,193,2,192,87,94,23,193,1,248,22,182,12,23, 22,183,12,23,196,2,28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,
196,2,11,12,252,22,168,8,23,200,2,2,25,34,23,198,2,23,199,2,28, 196,2,11,12,252,22,170,8,23,200,2,2,25,34,23,198,2,23,199,2,28,
28,248,22,133,6,23,195,2,10,248,22,185,6,23,195,2,87,94,23,194,1, 28,248,22,135,6,23,195,2,10,248,22,187,6,23,195,2,87,94,23,194,1,
12,252,22,168,8,23,200,2,2,26,35,23,198,2,23,199,1,91,159,37,11, 12,252,22,170,8,23,200,2,2,26,35,23,198,2,23,199,1,91,159,37,11,
90,161,37,34,11,248,22,180,12,23,197,2,87,94,23,195,1,87,94,28,192, 90,161,37,34,11,248,22,182,12,23,197,2,87,94,23,195,1,87,94,28,192,
12,250,22,169,8,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,36, 12,250,22,171,8,23,201,1,2,27,23,199,1,249,22,7,194,195,91,159,36,
11,90,161,36,34,11,87,95,28,28,248,22,160,12,23,196,2,10,27,248,22, 11,90,161,36,34,11,87,95,28,28,248,22,162,12,23,196,2,10,27,248,22,
159,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23, 161,12,23,197,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,
197,2,27,248,22,181,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248, 197,2,27,248,22,183,12,23,198,2,28,23,193,2,192,87,94,23,193,1,248,
22,182,12,23,198,2,11,12,252,22,168,8,2,10,2,25,34,23,200,2,23, 22,184,12,23,198,2,11,12,252,22,170,8,2,10,2,25,34,23,200,2,23,
201,2,28,28,248,22,133,6,23,197,2,10,248,22,185,6,23,197,2,12,252, 201,2,28,28,248,22,135,6,23,197,2,10,248,22,187,6,23,197,2,12,252,
22,168,8,2,10,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37, 22,170,8,2,10,2,26,35,23,200,2,23,201,2,91,159,37,11,90,161,37,
34,11,248,22,180,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12, 34,11,248,22,182,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12,
250,22,169,8,2,10,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27, 250,22,171,8,2,10,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27,
249,22,169,12,250,22,152,13,0,18,35,114,120,35,34,40,91,46,93,91,94, 249,22,171,12,250,22,154,13,0,18,35,114,120,35,34,40,91,46,93,91,94,
46,93,42,124,41,36,34,248,22,165,12,23,201,1,28,248,22,133,6,23,203, 46,93,42,124,41,36,34,248,22,167,12,23,201,1,28,248,22,135,6,23,203,
2,249,22,145,7,23,204,1,8,63,23,202,1,28,248,22,160,12,23,199,2, 2,249,22,147,7,23,204,1,8,63,23,202,1,28,248,22,162,12,23,199,2,
248,22,161,12,23,199,1,87,94,23,198,1,247,22,162,12,28,248,22,159,12, 248,22,163,12,23,199,1,87,94,23,198,1,247,22,164,12,28,248,22,161,12,
194,249,22,177,12,195,194,192,91,159,36,11,90,161,36,34,11,87,95,28,28, 194,249,22,179,12,195,194,192,91,159,36,11,90,161,36,34,11,87,95,28,28,
248,22,160,12,23,196,2,10,27,248,22,159,12,23,197,2,28,23,193,2,192, 248,22,162,12,23,196,2,10,27,248,22,161,12,23,197,2,28,23,193,2,192,
87,94,23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2, 87,94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,183,12,23,198,2,
28,23,193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,12,252,22, 28,23,193,2,192,87,94,23,193,1,248,22,184,12,23,198,2,11,12,252,22,
168,8,2,11,2,25,34,23,200,2,23,201,2,28,28,248,22,133,6,23,197, 170,8,2,11,2,25,34,23,200,2,23,201,2,28,28,248,22,135,6,23,197,
2,10,248,22,185,6,23,197,2,12,252,22,168,8,2,11,2,26,35,23,200, 2,10,248,22,187,6,23,197,2,12,252,22,170,8,2,11,2,26,35,23,200,
2,23,201,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199,2,87, 2,23,201,2,91,159,37,11,90,161,37,34,11,248,22,182,12,23,199,2,87,
94,23,195,1,87,94,28,23,193,2,12,250,22,169,8,2,11,2,27,23,201, 94,23,195,1,87,94,28,23,193,2,12,250,22,171,8,2,11,2,27,23,201,
2,249,22,7,23,195,1,23,196,1,27,249,22,169,12,249,22,131,7,250,22, 2,249,22,7,23,195,1,23,196,1,27,249,22,171,12,249,22,133,7,250,22,
153,13,0,9,35,114,120,35,34,91,46,93,34,248,22,165,12,23,203,1,6, 155,13,0,9,35,114,120,35,34,91,46,93,34,248,22,167,12,23,203,1,6,
1,1,95,28,248,22,133,6,23,202,2,249,22,145,7,23,203,1,8,63,23, 1,1,95,28,248,22,135,6,23,202,2,249,22,147,7,23,203,1,8,63,23,
201,1,28,248,22,160,12,23,199,2,248,22,161,12,23,199,1,87,94,23,198, 201,1,28,248,22,162,12,23,199,2,248,22,163,12,23,199,1,87,94,23,198,
1,247,22,162,12,28,248,22,159,12,194,249,22,177,12,195,194,192,249,247,22, 1,247,22,164,12,28,248,22,161,12,194,249,22,179,12,195,194,192,249,247,22,
184,5,194,11,248,80,158,35,45,9,27,247,22,138,13,249,80,158,37,46,28, 186,5,194,11,248,80,158,35,45,9,27,247,22,140,13,249,80,158,37,46,28,
23,195,2,27,248,22,150,7,6,11,11,80,76,84,67,79,76,76,69,67,84, 23,195,2,27,248,22,152,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,23,196,1,250,22,177,12,248,22, 83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,179,12,248,22,
134,13,69,97,100,100,111,110,45,100,105,114,247,22,148,7,6,8,8,99,111, 136,13,69,97,100,100,111,110,45,100,105,114,247,22,150,7,6,8,8,99,111,
108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,23,202,1,248, 108,108,101,99,116,115,11,27,248,80,159,40,52,35,249,22,77,23,202,1,248,
22,73,248,22,134,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,23, 22,73,248,22,136,13,72,99,111,108,108,101,99,116,115,45,100,105,114,28,23,
194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,8,44,37,49,2, 194,2,249,22,63,23,196,1,23,195,1,192,32,49,89,162,8,44,37,49,2,
19,222,33,50,27,249,22,145,13,23,197,2,23,198,2,28,23,193,2,87,94, 19,222,33,50,27,249,22,147,13,23,197,2,23,198,2,28,23,193,2,87,94,
23,196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248, 23,196,1,27,248,22,88,23,195,2,27,250,2,49,23,199,2,23,200,1,248,
22,97,23,199,1,28,249,22,191,6,23,196,2,2,28,249,22,77,197,194,87, 22,97,23,199,1,28,249,22,129,7,23,196,2,2,28,249,22,77,197,194,87,
94,23,196,1,249,22,63,248,22,168,12,23,197,1,194,87,95,23,195,1,23, 94,23,196,1,249,22,63,248,22,170,12,23,197,1,194,87,95,23,195,1,23,
193,1,28,249,22,191,6,23,198,2,2,28,249,22,77,195,9,87,94,23,194, 193,1,28,249,22,129,7,23,198,2,2,28,249,22,77,195,9,87,94,23,194,
1,249,22,63,248,22,168,12,23,199,1,9,87,95,28,28,248,22,185,6,194, 1,249,22,63,248,22,170,12,23,199,1,9,87,95,28,28,248,22,187,6,194,
10,248,22,133,6,194,12,250,22,168,8,2,14,6,21,21,98,121,116,101,32, 10,248,22,135,6,194,12,250,22,170,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, 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,159,12,196,11,12,250,22,168,8,2,14,6,13,13,108, 72,195,249,22,4,22,161,12,196,11,12,250,22,170,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, 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,44,38,56,2,19,222,33, 135,6,197,248,22,146,7,197,196,32,52,89,162,8,44,38,56,2,19,222,33,
55,32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222, 55,32,53,89,162,8,44,37,53,70,102,111,117,110,100,45,101,120,101,99,222,
33,54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,199, 33,54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,182,12,23,199,
2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,185,12,23,201, 2,87,95,23,195,1,23,194,1,27,28,23,198,2,27,248,22,187,12,23,201,
2,28,249,22,140,8,23,195,2,23,202,2,11,28,248,22,181,12,23,194,2, 2,28,249,22,142,8,23,195,2,23,202,2,11,28,248,22,183,12,23,194,2,
250,2,53,23,201,2,23,202,2,249,22,177,12,23,200,2,23,198,1,250,2, 250,2,53,23,201,2,23,202,2,249,22,179,12,23,200,2,23,198,1,250,2,
53,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1, 53,23,201,2,23,202,2,23,196,1,11,28,23,193,2,192,87,94,23,193,1,
27,28,248,22,159,12,23,196,2,27,249,22,177,12,23,198,2,23,201,2,28, 27,28,248,22,161,12,23,196,2,27,249,22,179,12,23,198,2,23,201,2,28,
28,248,22,172,12,193,10,248,22,171,12,193,192,11,11,28,23,193,2,192,87, 28,248,22,174,12,193,10,248,22,173,12,193,192,11,11,28,23,193,2,192,87,
94,23,193,1,28,23,199,2,11,27,248,22,185,12,23,202,2,28,249,22,140, 94,23,193,1,28,23,199,2,11,27,248,22,187,12,23,202,2,28,249,22,142,
8,23,195,2,23,203,1,11,28,248,22,181,12,23,194,2,250,2,53,23,202, 8,23,195,2,23,203,1,11,28,248,22,183,12,23,194,2,250,2,53,23,202,
1,23,203,1,249,22,177,12,23,201,1,23,198,1,250,2,53,201,202,195,194, 1,23,203,1,249,22,179,12,23,201,1,23,198,1,250,2,53,201,202,195,194,
28,248,22,71,23,197,2,11,27,248,22,184,12,248,22,64,23,199,2,27,249, 28,248,22,71,23,197,2,11,27,248,22,186,12,248,22,64,23,199,2,27,249,
22,177,12,23,196,1,23,197,2,28,248,22,171,12,23,194,2,250,2,53,198, 22,179,12,23,196,1,23,197,2,28,248,22,173,12,23,194,2,250,2,53,198,
199,195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2, 199,195,87,94,23,193,1,27,248,22,65,23,200,1,28,248,22,71,23,194,2,
11,27,248,22,184,12,248,22,64,23,196,2,27,249,22,177,12,23,196,1,23, 11,27,248,22,186,12,248,22,64,23,196,2,27,249,22,179,12,23,196,1,23,
200,2,28,248,22,171,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1, 200,2,28,248,22,173,12,23,194,2,250,2,53,201,202,195,87,94,23,193,1,
27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,184,12,248, 27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,186,12,248,
22,64,195,27,249,22,177,12,23,196,1,202,28,248,22,171,12,193,250,2,53, 22,64,195,27,249,22,179,12,23,196,1,202,28,248,22,173,12,193,250,2,53,
204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,159,12, 204,205,195,251,2,52,204,205,206,248,22,65,199,87,95,28,27,248,22,161,12,
23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23,196,2, 23,196,2,28,23,193,2,192,87,94,23,193,1,28,248,22,135,6,23,196,2,
27,248,22,181,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,182, 27,248,22,183,12,23,197,2,28,23,193,2,192,87,94,23,193,1,248,22,184,
12,23,197,2,11,12,250,22,168,8,2,15,6,25,25,112,97,116,104,32,111, 12,23,197,2,11,12,250,22,170,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,23,197, 114,32,115,116,114,105,110,103,32,40,115,97,110,115,32,110,117,108,41,23,197,
2,28,28,23,195,2,28,27,248,22,159,12,23,197,2,28,23,193,2,192,87, 2,28,28,23,195,2,28,27,248,22,161,12,23,197,2,28,23,193,2,192,87,
94,23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,12,23,198,2,28, 94,23,193,1,28,248,22,135,6,23,197,2,27,248,22,183,12,23,198,2,28,
23,193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,248,22,181,12, 23,193,2,192,87,94,23,193,1,248,22,184,12,23,198,2,11,248,22,183,12,
23,196,2,11,10,12,250,22,168,8,2,15,6,29,29,35,102,32,111,114,32, 23,196,2,11,10,12,250,22,170,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, 114,101,108,97,116,105,118,101,32,112,97,116,104,32,111,114,32,115,116,114,105,
110,103,23,198,2,28,28,248,22,181,12,23,195,2,91,159,37,11,90,161,37, 110,103,23,198,2,28,28,248,22,183,12,23,195,2,91,159,37,11,90,161,37,
34,11,248,22,180,12,23,198,2,249,22,138,8,194,68,114,101,108,97,116,105, 34,11,248,22,182,12,23,198,2,249,22,140,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,23,199,1, 118,101,11,27,248,22,152,7,6,4,4,80,65,84,72,251,2,52,23,199,1,
23,200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28, 23,200,1,23,201,1,28,23,197,2,27,249,80,158,42,46,23,200,1,9,28,
249,22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,12,5,1,46,23, 249,22,140,8,247,22,154,7,2,21,249,22,63,248,22,170,12,5,1,46,23,
195,1,192,9,27,248,22,184,12,23,196,1,28,248,22,171,12,193,250,2,53, 195,1,192,9,27,248,22,186,12,23,196,1,28,248,22,173,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, 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, 94,249,22,191,5,247,22,168,4,195,248,22,142,5,249,22,153,3,34,249,22,
135,3,197,198,27,248,22,134,13,2,20,27,249,80,158,38,47,23,196,1,11, 137,3,197,198,27,248,22,136,13,2,20,27,249,80,158,38,47,23,196,1,11,
27,27,248,22,154,3,23,199,1,28,192,192,34,27,27,248,22,154,3,23,201, 27,27,248,22,156,3,23,199,1,28,192,192,34,27,27,248,22,156,3,23,201,
1,28,192,192,34,27,249,22,183,4,23,198,1,83,158,38,20,97,95,89,162, 1,28,192,192,34,27,249,22,185,4,23,198,1,83,158,38,20,96,95,89,162,
8,44,34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,170,4, 8,44,34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,172,4,
23,195,1,87,94,248,22,134,4,21,94,2,17,2,29,248,80,159,41,53,35, 23,195,1,87,94,248,22,136,4,21,94,2,17,2,29,248,80,159,41,53,35,
193,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158, 193,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158,
40,20,100,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34, 40,20,99,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34,
34,20,103,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2, 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,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7, 1,2,4,193,30,2,1,2,5,193,30,2,1,2,6,193,30,2,1,2,7,
193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2, 193,30,2,1,2,8,193,30,2,1,2,9,193,30,2,1,2,10,193,30,2,
1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14, 1,2,11,193,30,2,1,2,12,193,30,2,1,2,13,193,30,2,1,2,14,
@ -318,7 +318,7 @@
83,158,34,16,2,89,162,8,44,35,54,2,19,223,0,33,31,80,159,34,52, 83,158,34,16,2,89,162,8,44,35,54,2,19,223,0,33,31,80,159,34,52,
35,83,158,34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51, 35,83,158,34,16,2,89,162,8,44,35,43,9,223,0,33,32,80,159,34,51,
35,83,158,34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34, 35,83,158,34,16,2,32,0,89,162,42,35,43,2,2,222,33,33,80,159,34,
34,35,83,158,34,16,2,249,22,135,6,7,92,7,92,80,159,34,35,35,83, 34,35,83,158,34,16,2,249,22,137,6,7,92,7,92,80,159,34,35,35,83,
158,34,16,2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83, 158,34,16,2,89,162,42,35,52,2,4,223,0,33,34,80,159,34,36,35,83,
158,34,16,2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35, 158,34,16,2,32,0,89,162,42,36,48,2,5,222,33,35,80,159,34,37,35,
83,158,34,16,2,32,0,89,162,8,44,37,49,2,6,222,33,37,80,159,34, 83,158,34,16,2,32,0,89,162,8,44,37,49,2,6,222,33,37,80,159,34,
@ -328,13 +328,13 @@
80,159,34,41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33, 80,159,34,41,35,83,158,34,16,2,32,0,89,162,42,36,51,2,10,222,33,
44,80,159,34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222, 44,80,159,34,42,35,83,158,34,16,2,32,0,89,162,42,36,52,2,11,222,
33,45,80,159,34,43,35,83,158,34,16,2,32,0,89,162,42,35,42,2,12, 33,45,80,159,34,43,35,83,158,34,16,2,32,0,89,162,42,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, 222,33,46,80,159,34,44,35,83,158,34,16,2,83,158,37,20,95,95,2,13,
89,162,42,34,41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80, 89,162,42,34,41,9,223,0,33,47,89,162,42,35,51,9,223,0,33,48,80,
159,34,45,35,83,158,34,16,2,27,248,22,141,13,248,22,144,7,27,28,249, 159,34,45,35,83,158,34,16,2,27,248,22,143,13,248,22,146,7,27,28,249,
22,138,8,247,22,152,7,2,21,6,1,1,59,6,1,1,58,250,22,181,6, 22,140,8,247,22,154,7,2,21,6,1,1,59,6,1,1,58,250,22,183,6,
6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23, 6,14,14,40,91,94,126,97,93,42,41,126,97,40,46,42,41,23,196,2,23,
196,1,89,162,8,44,36,46,2,14,223,0,33,51,80,159,34,46,35,83,158, 196,1,89,162,8,44,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,44,37,52,9,223,0,33, 34,16,2,83,158,37,20,95,96,2,15,89,162,8,44,37,52,9,223,0,33,
56,89,162,42,36,45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58, 56,89,162,42,36,45,9,223,0,33,57,89,162,42,35,44,9,223,0,33,58,
80,159,34,47,35,83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60, 80,159,34,47,35,83,158,34,16,2,89,162,42,36,49,2,16,223,0,33,60,
80,159,34,48,35,94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109, 80,159,34,48,35,94,29,94,2,17,2,29,11,29,94,2,17,69,35,37,109,
@ -342,16 +342,16 @@
EVAL_ONE_SIZED_STR((char *)expr, 5009); EVAL_ONE_SIZED_STR((char *)expr, 5009);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,8,0,0,0,1,0,0,6,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,54,8,0,0,0,1,0,0,6,0,
19,0,34,0,48,0,62,0,76,0,111,0,0,0,243,0,0,0,65,113,117, 19,0,34,0,48,0,62,0,76,0,111,0,0,0,243,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, 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, 35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97,
109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1, 109,122,11,29,94,2,1,68,35,37,101,120,112,111,98,115,11,29,94,2,1,
68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,144,185,97,159,2,2, 68,35,37,107,101,114,110,101,108,11,98,10,34,11,8,144,185,97,159,2,2,
34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34, 34,34,159,2,3,34,34,159,2,4,34,34,159,2,5,34,34,159,2,6,34,
34,16,0,159,34,20,103,159,34,16,1,20,24,65,98,101,103,105,110,16,0, 34,16,0,159,34,20,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,
83,158,40,20,100,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10, 83,158,40,20,99,137,69,35,37,98,117,105,108,116,105,110,29,11,11,10,10,
18,96,11,41,41,41,34,80,158,34,34,20,103,159,34,16,0,16,0,11,11, 18,96,11,41,41,41,34,80,158,34,34,20,102,159,34,16,0,16,0,11,11,
16,0,34,11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0, 16,0,34,11,37,34,11,11,16,0,16,0,16,0,34,34,35,11,11,16,0,
16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0, 16,0,16,0,34,34,11,11,11,16,0,16,0,16,0,34,34,16,0,16,0,
98,2,6,2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2, 98,2,6,2,5,29,94,2,1,69,35,37,102,111,114,101,105,103,110,11,2,
@ -359,7 +359,7 @@
EVAL_ONE_SIZED_STR((char *)expr, 282); EVAL_ONE_SIZED_STR((char *)expr, 282);
} }
{ {
static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,52,52,0,0,0,1,0,0,3,0, static MZCOMPILED_STRING_FAR unsigned char expr[] = {35,126,9,51,46,57,57,46,48,46,49,54,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, 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, 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,185,1,230,1,253,1,32,2,67,2,101,2,111,2,145,2,155, 74,1,82,1,185,1,230,1,253,1,32,2,67,2,101,2,111,2,145,2,155,
@ -381,48 +381,48 @@
97,107,64,108,111,111,112,1,29,115,116,97,110,100,97,114,100,45,109,111,100, 97,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, 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, 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,23,195,2,28,249,22,138,8,23,197,2,80,158,37,45,87, 35,195,10,27,28,23,195,2,28,249,22,140,8,23,197,2,80,158,37,45,87,
94,23,195,1,80,158,35,46,27,248,22,149,4,23,197,2,28,248,22,159,12, 94,23,195,1,80,158,35,46,27,248,22,151,4,23,197,2,28,248,22,161,12,
23,194,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,197,1,87,95, 23,194,2,91,159,37,11,90,161,37,34,11,248,22,182,12,23,197,1,87,95,
83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,39,46,192,192,11,11, 83,160,36,11,80,158,39,45,198,83,160,36,11,80,158,39,46,192,192,11,11,
28,23,193,2,192,87,94,23,193,1,27,247,22,185,5,28,192,192,247,22,135, 28,23,193,2,192,87,94,23,193,1,27,247,22,187,5,28,192,192,247,22,137,
13,20,14,159,80,158,34,38,250,80,158,37,39,249,22,27,11,80,158,39,38, 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,159,12,23,198,2,23,197,1,87,94,23,197,1,247,22, 22,187,5,28,248,22,161,12,23,198,2,23,197,1,87,94,23,197,1,247,22,
135,13,247,194,250,22,177,12,23,197,1,23,199,1,249,80,158,41,37,23,198, 137,13,247,194,250,22,179,12,23,197,1,23,199,1,249,80,158,41,37,23,198,
1,5,3,46,122,111,252,22,177,12,23,199,1,23,201,1,6,6,6,110,97, 1,5,3,46,122,111,252,22,179,12,23,199,1,23,201,1,6,6,6,110,97,
116,105,118,101,247,22,153,7,249,80,158,43,37,23,200,1,80,158,43,34,87, 116,105,118,101,247,22,155,7,249,80,158,43,37,23,200,1,80,158,43,34,87,
94,23,194,1,27,23,194,1,27,250,22,130,13,196,11,32,0,89,162,8,44, 94,23,194,1,27,23,194,1,27,250,22,132,13,196,11,32,0,89,162,8,44,
34,39,9,222,11,28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1, 34,39,9,222,11,28,192,249,22,63,195,194,11,27,248,23,195,1,23,196,1,
27,250,22,130,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28,192,249, 27,250,22,132,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,140,13,248,22,64,195,195,27,248,23,195,1,23, 22,63,195,194,11,249,247,22,142,13,248,22,64,195,195,27,248,23,195,1,23,
196,1,27,250,22,130,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28, 196,1,27,250,22,132,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, 192,249,22,63,195,194,11,249,247,22,185,5,248,22,64,195,195,249,247,22,185,
5,194,195,87,94,28,248,80,158,35,36,23,195,2,12,250,22,168,8,77,108, 5,194,195,87,94,28,248,80,158,35,36,23,195,2,12,250,22,170,8,77,108,
111,97,100,47,117,115,101,45,99,111,109,112,105,108,101,100,6,25,25,112,97, 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, 116,104,32,111,114,32,118,97,108,105,100,45,112,97,116,104,32,115,116,114,105,
110,103,23,197,2,91,159,40,11,90,161,35,34,11,28,248,22,183,12,23,201, 110,103,23,197,2,91,159,40,11,90,161,35,34,11,28,248,22,185,12,23,201,
2,23,200,1,27,247,22,185,5,28,23,193,2,249,22,184,12,23,203,1,23, 2,23,200,1,27,247,22,187,5,28,23,193,2,249,22,186,12,23,203,1,23,
195,1,200,90,161,37,35,11,248,22,180,12,23,194,2,87,94,23,196,1,90, 195,1,200,90,161,37,35,11,248,22,182,12,23,194,2,87,94,23,196,1,90,
161,35,38,11,28,249,22,138,8,23,196,2,68,114,101,108,97,116,105,118,101, 161,35,38,11,28,249,22,140,8,23,196,2,68,114,101,108,97,116,105,118,101,
87,94,23,194,1,2,17,23,194,1,90,161,35,39,11,247,22,137,13,27,89, 87,94,23,194,1,2,17,23,194,1,90,161,35,39,11,247,22,139,13,27,89,
162,42,35,48,62,122,111,225,7,5,3,33,27,27,83,158,38,20,97,94,89, 162,42,35,48,62,122,111,225,7,5,3,33,27,27,83,158,38,20,96,94,89,
162,42,35,50,9,225,8,6,4,33,28,23,197,1,27,249,22,5,89,162,8, 162,42,35,50,9,225,8,6,4,33,28,23,197,1,27,249,22,5,89,162,8,
44,35,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83, 44,35,46,9,223,5,33,29,23,203,2,27,28,23,195,2,27,249,22,5,83,
158,38,20,97,94,89,162,8,44,35,46,9,223,5,33,30,23,198,1,23,205, 158,38,20,96,94,89,162,8,44,35,46,9,223,5,33,30,23,198,1,23,205,
2,27,28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,147, 2,27,28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,149,
3,248,22,65,196,248,22,65,23,199,2,193,11,11,11,87,94,23,195,1,11, 3,248,22,65,196,248,22,65,23,199,2,193,11,11,11,87,94,23,195,1,11,
28,23,193,2,249,80,159,46,53,35,202,89,162,42,34,44,9,224,14,2,33, 28,23,193,2,249,80,159,46,53,35,202,89,162,42,34,44,9,224,14,2,33,
31,87,94,23,193,1,27,28,23,197,2,27,249,22,5,83,158,38,20,97,94, 31,87,94,23,193,1,27,28,23,197,2,27,249,22,5,83,158,38,20,96,94,
89,162,8,44,35,46,9,223,7,33,32,23,200,1,23,206,1,27,28,196,11, 89,162,8,44,35,46,9,223,7,33,32,23,200,1,23,206,1,27,28,196,11,
193,28,192,192,28,193,28,196,28,249,22,147,3,248,22,65,196,248,22,65,199, 193,28,192,192,28,193,28,196,28,249,22,149,3,248,22,65,196,248,22,65,199,
193,11,11,11,11,28,192,249,80,159,47,53,35,203,89,162,42,34,44,9,224, 193,11,11,11,11,28,192,249,80,159,47,53,35,203,89,162,42,34,44,9,224,
15,2,33,33,249,80,159,47,53,35,203,89,162,42,34,43,9,224,15,7,33, 15,2,33,33,249,80,159,47,53,35,203,89,162,42,34,43,9,224,15,7,33,
34,32,36,89,162,8,44,35,53,2,19,222,33,38,0,17,35,114,120,34,94, 34,32,36,89,162,8,44,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,145,13,2,37,23,196, 40,46,42,63,41,47,40,46,42,41,36,34,27,249,22,147,13,2,37,23,196,
2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,248, 2,28,23,193,2,87,94,23,194,1,249,22,63,248,22,88,23,196,2,27,248,
22,97,23,197,1,27,249,22,145,13,2,37,23,196,2,28,23,193,2,87,94, 22,97,23,197,1,27,249,22,147,13,2,37,23,196,2,28,23,193,2,87,94,
23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249, 23,194,1,249,22,63,248,22,88,23,196,2,27,248,22,97,23,197,1,27,249,
22,145,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248, 22,147,13,2,37,23,196,2,28,23,193,2,87,94,23,194,1,249,22,63,248,
22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,73, 22,88,23,196,2,248,2,36,248,22,97,23,197,1,248,22,73,194,248,22,73,
194,248,22,73,194,32,39,89,162,42,35,53,2,19,222,33,40,28,248,22,71, 194,248,22,73,194,32,39,89,162,42,35,53,2,19,222,33,40,28,248,22,71,
248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36, 248,22,65,23,195,2,249,22,7,9,248,22,64,195,91,159,36,11,90,161,36,
@ -433,97 +433,97 @@
22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249, 22,7,249,22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,
22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248, 22,63,248,22,64,23,200,1,23,197,1,23,196,1,249,22,7,249,22,63,248,
22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,2, 22,64,23,200,1,23,197,1,195,27,248,2,36,23,195,1,28,194,192,248,2,
39,193,87,95,28,248,22,147,4,195,12,250,22,168,8,2,20,6,20,20,114, 39,193,87,95,28,248,22,149,4,195,12,250,22,170,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, 101,115,111,108,118,101,100,45,109,111,100,117,108,101,45,112,97,116,104,197,28,
24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,126,80,158, 24,193,2,248,24,194,1,195,87,94,23,193,1,12,27,27,250,22,126,80,158,
40,41,248,22,163,13,247,22,147,11,11,28,23,193,2,192,87,94,23,193,1, 40,41,248,22,165,13,247,22,149,11,11,28,23,193,2,192,87,94,23,193,1,
27,247,22,120,87,94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11, 27,247,22,120,87,94,250,22,125,80,158,41,41,248,22,165,13,247,22,149,11,
195,192,250,22,125,195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28, 195,192,250,22,125,195,198,66,97,116,116,97,99,104,251,211,197,198,199,10,28,
192,250,22,167,8,11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1, 192,250,22,169,8,11,196,195,248,22,167,8,194,28,249,22,141,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, 1,46,2,17,28,249,22,141,6,194,6,2,2,46,46,62,117,112,192,28,249,
22,140,8,248,22,65,23,200,2,23,197,1,28,249,22,138,8,248,22,64,23, 22,142,8,248,22,65,23,200,2,23,197,1,28,249,22,140,8,248,22,64,23,
200,2,23,196,1,251,22,165,8,2,20,6,26,26,99,121,99,108,101,32,105, 200,2,23,196,1,251,22,167,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,23,200, 110,32,108,111,97,100,105,110,103,32,97,116,32,126,101,58,32,126,101,23,200,
1,249,22,2,22,65,248,22,78,249,22,63,23,206,1,23,202,1,12,12,247, 1,249,22,2,22,65,248,22,78,249,22,63,23,206,1,23,202,1,12,12,247,
192,20,14,159,80,158,38,43,249,22,63,247,22,147,11,23,197,1,20,14,159, 192,20,14,159,80,158,38,43,249,22,63,247,22,149,11,23,197,1,20,14,159,
80,158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,23, 80,158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,133,4,23,
196,1,249,247,22,184,5,23,198,1,248,22,52,248,22,163,12,23,198,1,87, 196,1,249,247,22,186,5,23,198,1,248,22,52,248,22,165,12,23,198,1,87,
94,28,28,248,22,159,12,23,197,2,10,248,22,152,4,23,197,2,12,28,23, 94,28,28,248,22,161,12,23,197,2,10,248,22,154,4,23,197,2,12,28,23,
198,2,250,22,167,8,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32, 198,2,250,22,169,8,11,6,15,15,98,97,100,32,109,111,100,117,108,101,32,
112,97,116,104,23,201,2,250,22,168,8,2,20,6,19,19,109,111,100,117,108, 112,97,116,104,23,201,2,250,22,170,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,23,199,2,28,28,248,22, 101,45,112,97,116,104,32,111,114,32,112,97,116,104,23,199,2,28,28,248,22,
61,23,197,2,249,22,138,8,248,22,64,23,199,2,2,4,11,248,22,148,4, 61,23,197,2,249,22,140,8,248,22,64,23,199,2,2,4,11,248,22,150,4,
248,22,88,197,28,28,248,22,61,23,197,2,249,22,138,8,248,22,64,23,199, 248,22,88,197,28,28,248,22,61,23,197,2,249,22,140,8,248,22,64,23,199,
2,66,112,108,97,110,101,116,11,87,94,28,207,12,20,14,159,80,158,36,38, 2,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,147,11,23,197,1,90,161, 250,80,158,39,39,249,22,27,11,80,158,41,38,22,149,11,23,197,1,90,161,
35,34,10,249,22,132,4,21,94,2,21,6,18,18,112,108,97,110,101,116,47, 35,34,10,249,22,134,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, 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, 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,87,94,23,193,1,27,89,162,42,35,44,79,115,104,111,119, 211,199,200,201,202,87,94,23,193,1,27,89,162,42,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, 45,99,111,108,108,101,99,116,105,111,110,45,101,114,114,223,6,33,44,27,28,
248,22,51,23,199,2,27,250,22,126,80,158,42,42,249,22,63,23,204,2,247, 248,22,51,23,199,2,27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,
22,136,13,11,28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36, 22,138,13,11,28,23,193,2,192,87,94,23,193,1,91,159,36,11,90,161,36,
34,11,249,80,159,43,47,35,248,22,54,23,204,2,11,27,251,80,158,46,49, 34,11,249,80,159,43,47,35,248,22,54,23,204,2,11,27,251,80,158,46,49,
2,20,23,202,1,28,248,22,71,23,199,2,23,199,2,248,22,64,23,199,2, 2,20,23,202,1,28,248,22,71,23,199,2,23,199,2,248,22,64,23,199,2,
28,248,22,71,23,199,2,9,248,22,65,23,199,2,249,22,177,12,23,195,1, 28,248,22,71,23,199,2,9,248,22,65,23,199,2,249,22,179,12,23,195,1,
28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115, 28,248,22,71,23,197,1,87,94,23,197,1,6,7,7,109,97,105,110,46,115,
115,249,22,156,6,23,199,1,6,3,3,46,115,115,28,248,22,133,6,23,199, 115,249,22,158,6,23,199,1,6,3,3,46,115,115,28,248,22,135,6,23,199,
2,87,94,23,194,1,27,248,80,159,40,54,35,23,201,2,27,250,22,126,80, 2,87,94,23,194,1,27,248,80,159,40,54,35,23,201,2,27,250,22,126,80,
158,43,42,249,22,63,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23, 158,43,42,249,22,63,23,205,2,23,199,2,11,28,23,193,2,192,87,94,23,
193,1,91,159,36,11,90,161,36,34,11,249,80,159,44,47,35,23,204,2,11, 193,1,91,159,36,11,90,161,36,34,11,249,80,159,44,47,35,23,204,2,11,
250,22,1,22,177,12,23,199,1,249,22,77,249,22,2,32,0,89,162,8,44, 250,22,1,22,179,12,23,199,1,249,22,77,249,22,2,32,0,89,162,8,44,
35,42,9,222,33,45,23,200,1,248,22,73,23,200,1,28,248,22,159,12,23, 35,42,9,222,33,45,23,200,1,248,22,73,23,200,1,28,248,22,161,12,23,
199,2,87,94,23,194,1,28,248,22,182,12,23,199,2,23,198,2,248,22,73, 199,2,87,94,23,194,1,28,248,22,184,12,23,199,2,23,198,2,248,22,73,
6,26,26,32,40,97,32,112,97,116,104,32,109,117,115,116,32,98,101,32,97, 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,138,8,248,22,64,23,201,2,2,21, 98,115,111,108,117,116,101,41,28,249,22,140,8,248,22,64,23,201,2,2,21,
27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,22,136,13,11,28,23, 27,250,22,126,80,158,42,42,249,22,63,23,204,2,247,22,138,13,11,28,23,
193,2,192,87,94,23,193,1,91,159,37,11,90,161,36,34,11,249,80,159,44, 193,2,192,87,94,23,193,1,91,159,37,11,90,161,36,34,11,249,80,159,44,
47,35,248,22,88,23,205,2,11,90,161,35,36,11,28,248,22,71,248,22,90, 47,35,248,22,88,23,205,2,11,90,161,35,36,11,28,248,22,71,248,22,90,
23,204,2,28,248,22,71,23,194,2,249,22,147,13,0,8,35,114,120,34,91, 23,204,2,28,248,22,71,23,194,2,249,22,149,13,0,8,35,114,120,34,91,
46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,77,28,248,22,71, 46,93,34,23,196,2,11,10,27,27,28,23,197,2,249,22,77,28,248,22,71,
248,22,90,23,208,2,21,93,6,5,5,109,122,108,105,98,249,22,1,22,77, 248,22,90,23,208,2,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,211,2,23,197,2,28,248,22,71, 249,22,2,80,159,50,55,35,248,22,90,23,211,2,23,197,2,28,248,22,71,
23,196,2,248,22,73,23,197,2,23,195,2,251,80,158,48,49,2,20,23,204, 23,196,2,248,22,73,23,197,2,23,195,2,251,80,158,48,49,2,20,23,204,
1,248,22,64,23,198,2,248,22,65,23,198,1,249,22,177,12,23,195,1,28, 1,248,22,64,23,198,2,248,22,65,23,198,1,249,22,179,12,23,195,1,28,
23,198,1,87,94,23,196,1,23,197,1,28,248,22,71,23,197,1,87,94,23, 23,198,1,87,94,23,196,1,23,197,1,28,248,22,71,23,197,1,87,94,23,
197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,147,13,0,8,35,114, 197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,149,13,0,8,35,114,
120,34,91,46,93,34,23,199,2,23,197,1,249,22,156,6,23,199,1,6,3, 120,34,91,46,93,34,23,199,2,23,197,1,249,22,158,6,23,199,1,6,3,
3,46,115,115,28,249,22,138,8,248,22,64,23,201,2,64,102,105,108,101,249, 3,46,115,115,28,249,22,140,8,248,22,64,23,201,2,64,102,105,108,101,249,
22,184,12,248,22,88,23,201,2,248,80,159,41,54,35,23,202,2,12,87,94, 22,186,12,248,22,88,23,201,2,248,80,159,41,54,35,23,202,2,12,87,94,
28,28,248,22,159,12,23,194,2,10,248,22,155,7,23,194,2,87,94,23,200, 28,28,248,22,161,12,23,194,2,10,248,22,157,7,23,194,2,87,94,23,200,
1,12,28,23,200,2,250,22,167,8,67,114,101,113,117,105,114,101,249,22,181, 1,12,28,23,200,2,250,22,169,8,67,114,101,113,117,105,114,101,249,22,183,
6,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97, 6,6,17,17,98,97,100,32,109,111,100,117,108,101,32,112,97,116,104,126,97,
28,23,198,2,248,22,64,23,199,2,6,0,0,23,203,1,87,94,23,200,1, 28,23,198,2,248,22,64,23,199,2,6,0,0,23,203,1,87,94,23,200,1,
250,22,168,8,2,20,249,22,181,6,6,13,13,109,111,100,117,108,101,32,112, 250,22,170,8,2,20,249,22,183,6,6,13,13,109,111,100,117,108,101,32,112,
97,116,104,126,97,28,23,198,2,248,22,64,23,199,2,6,0,0,23,201,2, 97,116,104,126,97,28,23,198,2,248,22,64,23,199,2,6,0,0,23,201,2,
27,28,248,22,155,7,23,195,2,249,22,160,7,23,196,2,34,249,22,186,12, 27,28,248,22,157,7,23,195,2,249,22,162,7,23,196,2,34,249,22,188,12,
248,22,187,12,23,197,2,11,27,28,248,22,155,7,23,196,2,249,22,160,7, 248,22,189,12,23,197,2,11,27,28,248,22,157,7,23,196,2,249,22,162,7,
23,197,2,35,248,80,158,41,50,23,195,2,91,159,37,11,90,161,37,34,11, 23,197,2,35,248,80,158,41,50,23,195,2,91,159,37,11,90,161,37,34,11,
28,248,22,155,7,23,199,2,250,22,7,2,22,249,22,160,7,23,203,2,36, 28,248,22,157,7,23,199,2,250,22,7,2,22,249,22,162,7,23,203,2,36,
2,22,248,22,180,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22, 2,22,248,22,182,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22,
155,7,23,200,2,249,22,160,7,23,201,2,37,249,80,158,46,51,23,197,2, 157,7,23,200,2,249,22,162,7,23,201,2,37,249,80,158,46,51,23,197,2,
5,0,27,28,248,22,155,7,23,201,2,249,22,160,7,23,202,2,38,248,22, 5,0,27,28,248,22,157,7,23,201,2,249,22,162,7,23,202,2,38,248,22,
148,4,23,200,2,27,27,250,22,126,80,158,50,41,248,22,163,13,247,22,147, 150,4,23,200,2,27,27,250,22,126,80,158,50,41,248,22,165,13,247,22,149,
11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125, 11,11,28,23,193,2,192,87,94,23,193,1,27,247,22,120,87,94,250,22,125,
80,158,51,41,248,22,163,13,247,22,147,11,195,192,87,95,28,23,209,1,27, 80,158,51,41,248,22,165,13,247,22,149,11,195,192,87,95,28,23,209,1,27,
250,22,126,23,197,2,197,11,28,23,193,1,12,87,95,27,27,28,248,22,17, 250,22,126,23,197,2,197,11,28,23,193,1,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,23,197,2,80, 80,158,50,44,80,158,49,44,247,22,19,250,22,25,248,22,23,23,197,2,80,
158,52,43,23,196,1,27,247,22,147,11,249,22,3,83,158,38,20,97,94,89, 158,52,43,23,196,1,27,247,22,149,11,249,22,3,83,158,38,20,96,94,89,
162,8,44,35,53,9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28, 162,8,44,35,53,9,226,12,11,2,3,33,46,23,195,1,23,196,1,248,28,
248,22,17,80,158,49,44,32,0,89,162,42,35,40,9,222,33,47,80,159,48, 248,22,17,80,158,49,44,32,0,89,162,42,35,40,9,222,33,47,80,159,48,
56,35,89,162,42,34,49,9,227,14,9,8,4,3,33,48,250,22,125,23,197, 56,35,89,162,42,34,49,9,227,14,9,8,4,3,33,48,250,22,125,23,197,
1,197,10,12,28,28,248,22,155,7,23,202,1,11,27,248,22,133,6,23,208, 1,197,10,12,28,28,248,22,157,7,23,202,1,11,27,248,22,135,6,23,208,
2,28,192,192,28,248,22,61,23,208,2,249,22,138,8,248,22,64,23,210,2, 2,28,192,192,28,248,22,61,23,208,2,249,22,140,8,248,22,64,23,210,2,
2,21,11,250,22,125,80,158,49,42,28,248,22,133,6,23,210,2,249,22,63, 2,21,11,250,22,125,80,158,49,42,28,248,22,135,6,23,210,2,249,22,63,
23,211,1,248,80,159,52,54,35,23,213,1,87,94,23,210,1,249,22,63,23, 23,211,1,248,80,159,52,54,35,23,213,1,87,94,23,210,1,249,22,63,23,
211,1,247,22,136,13,252,22,157,7,23,208,1,23,207,1,23,205,1,23,203, 211,1,247,22,138,13,252,22,159,7,23,208,1,23,207,1,23,205,1,23,203,
1,201,12,193,91,159,36,10,90,161,35,34,10,11,90,161,35,35,10,83,158, 1,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,44,35,49,9,224,2,0,33,42,89,162,42, 37,20,95,96,2,20,89,162,8,44,35,49,9,224,2,0,33,42,89,162,42,
37,47,9,223,1,33,43,89,162,42,38,8,30,9,225,2,3,0,33,49,208, 37,47,9,223,1,33,43,89,162,42,38,8,30,9,225,2,3,0,33,49,208,
87,95,248,22,130,4,248,80,158,36,48,247,22,147,11,248,22,184,5,80,158, 87,95,248,22,132,4,248,80,158,36,48,247,22,149,11,248,22,186,5,80,158,
35,35,248,22,133,12,80,159,35,40,35,159,34,20,103,159,34,16,1,20,24, 35,35,248,22,135,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,100,137,66,35,37,98,111,111,116, 65,98,101,103,105,110,16,0,83,158,40,20,99,137,66,35,37,98,111,111,116,
2,1,11,10,10,36,80,158,34,34,20,103,159,38,16,19,30,2,1,2,2, 2,1,11,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,45,115,116,114,105,110, 193,30,2,1,2,3,193,30,2,5,72,112,97,116,104,45,115,116,114,105,110,
103,63,10,30,2,5,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105, 103,63,10,30,2,5,75,112,97,116,104,45,97,100,100,45,115,117,102,102,105,
120,7,30,2,6,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105, 120,7,30,2,6,1,20,112,97,114,97,109,101,116,101,114,105,122,97,116,105,
@ -542,7 +542,7 @@
34,16,2,89,162,8,44,35,43,9,223,0,33,24,80,159,34,55,35,83,158, 34,16,2,89,162,8,44,35,43,9,223,0,33,24,80,159,34,55,35,83,158,
34,16,2,89,162,42,35,47,67,103,101,116,45,100,105,114,223,0,33,25,80, 34,16,2,89,162,42,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,42,36,47,68,119,105,116,104,45,100, 159,34,54,35,83,158,34,16,2,89,162,42,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,152,7,69, 105,114,223,0,33,26,80,159,34,53,35,83,158,34,16,2,248,22,154,7,69,
115,111,45,115,117,102,102,105,120,80,159,34,34,35,83,158,34,16,2,89,162, 115,111,45,115,117,102,102,105,120,80,159,34,34,35,83,158,34,16,2,89,162,
42,36,58,2,3,223,0,33,35,80,159,34,35,35,83,158,34,16,2,32,0, 42,36,58,2,3,223,0,33,35,80,159,34,35,35,83,158,34,16,2,32,0,
89,162,8,44,35,40,2,7,222,192,80,159,34,40,35,83,158,34,16,2,248, 89,162,8,44,35,40,2,7,222,192,80,159,34,40,35,83,158,34,16,2,248,

View File

@ -28,15 +28,17 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include <math.h> #include <math.h>
#include "../gc2/gc2_obj.h"
int scheme_hash_request_count; int scheme_hash_request_count;
int scheme_hash_iteration_count; int scheme_hash_iteration_count;
#ifdef MZ_PRECISE_GC #ifdef MZ_PRECISE_GC
static short keygen; static long keygen;
XFORM_NONGCING static MZ_INLINE XFORM_NONGCING static MZ_INLINE
long PTR_TO_LONG(Scheme_Object *o) long PTR_TO_LONG(Scheme_Object *o)
{ {
long bits;
short v; short v;
if (SCHEME_INTP(o)) if (SCHEME_INTP(o))
@ -47,12 +49,30 @@ long PTR_TO_LONG(Scheme_Object *o)
if (!(v & 0xFFFC)) { if (!(v & 0xFFFC)) {
if (!keygen) if (!keygen)
keygen += 4; keygen += 4;
v |= keygen; v |= (short)keygen;
#ifdef OBJHEAD_HAS_HASH_BITS
/* In 3m mode, we only have 14 bits of hash code in the
Scheme_Object header. But the GC-level object header has some
leftover bits (currently 9 or 41, depending on the platform),
so use those, too. */
if (GC_is_allocated(o)) {
OBJHEAD_HASH_BITS(o) = (keygen >> 16);
v |= 0x4000;
} else
v &= ~0x4000;
#endif
o->keyex = v; o->keyex = v;
keygen += 4; keygen += 4;
} }
return (o->type << 16) | v; #ifdef OBJHEAD_HAS_HASH_BITS
if (v & 0x4000)
bits = OBJHEAD_HASH_BITS(o);
else
#endif
bits = o->type;
return (bits << 16) | ((v >> 2) & 0xFFFF);
} }
#else #else
# define PTR_TO_LONG(p) ((long)(p)) # define PTR_TO_LONG(p) ((long)(p))
@ -166,8 +186,6 @@ static Scheme_Object *do_hash(Scheme_Hash_Table *table, Scheme_Object *key, int
_h2 = NULL; _h2 = NULL;
} else } else
_h2 = &h2; _h2 = &h2;
if ((long)table->make_hash_indices < 0x100)
*(long *)0x0 = 1; /* REMOVEME */
table->make_hash_indices((void *)key, (long *)&h, (long *)_h2); table->make_hash_indices((void *)key, (long *)&h, (long *)_h2);
h = h & mask; h = h & mask;
if (_h2) { if (_h2) {
@ -991,7 +1009,6 @@ static long equal_hash_key(Scheme_Object *o, long k, Hash_Info *hi)
break; break;
} }
case scheme_complex_type: case scheme_complex_type:
case scheme_complex_izi_type:
{ {
Scheme_Complex *c = (Scheme_Complex *)o; Scheme_Complex *c = (Scheme_Complex *)o;
k += equal_hash_key(c->r, 0, hi); k += equal_hash_key(c->r, 0, hi);
@ -1351,7 +1368,6 @@ static long equal_hash_key2(Scheme_Object *o, Hash_Info *hi)
case scheme_rational_type: case scheme_rational_type:
return equal_hash_key2(scheme_rational_numerator(o), hi); return equal_hash_key2(scheme_rational_numerator(o), hi);
case scheme_complex_type: case scheme_complex_type:
case scheme_complex_izi_type:
{ {
long v1, v2; long v1, v2;
Scheme_Complex *c = (Scheme_Complex *)o; Scheme_Complex *c = (Scheme_Complex *)o;

View File

@ -190,6 +190,12 @@ static void register_traversers(void);
static void release_native_code(void *fnlized, void *p); static void release_native_code(void *fnlized, void *p);
#endif #endif
#ifdef MZ_USE_SINGLE_FLOATS
# define SCHEME_FLOAT_TYPE scheme_float_type
#else
# define SCHEME_FLOAT_TYPE scheme_double_type
#endif
#define NATIVE_PRESERVES_MARKS 0x1 #define NATIVE_PRESERVES_MARKS 0x1
#define NATIVE_IS_SINGLE_RESULT 0x2 #define NATIVE_IS_SINGLE_RESULT 0x2
@ -3429,11 +3435,17 @@ static int generate_inlined_unary(mz_jit_state *jitter, Scheme_App2_Rec *app, in
generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_type, for_branch, branch_short); generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_type, for_branch, branch_short);
return 1; return 1;
} else if (IS_NAMED_PRIM(rator, "real?")) { } else if (IS_NAMED_PRIM(rator, "real?")) {
generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_complex_izi_type, for_branch, branch_short); generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_double_type, for_branch, branch_short);
return 1; return 1;
} else if (IS_NAMED_PRIM(rator, "exact-integer?")) { } else if (IS_NAMED_PRIM(rator, "exact-integer?")) {
generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_bignum_type, for_branch, branch_short); generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_bignum_type, for_branch, branch_short);
return 1; return 1;
} else if (IS_NAMED_PRIM(rator, "fixnum?")) {
generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_integer_type, for_branch, branch_short);
return 1;
} else if (IS_NAMED_PRIM(rator, "inexact-real?")) {
generate_inlined_type_test(jitter, app, SCHEME_FLOAT_TYPE, scheme_double_type, for_branch, branch_short);
return 1;
} else if (IS_NAMED_PRIM(rator, "procedure?")) { } else if (IS_NAMED_PRIM(rator, "procedure?")) {
generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_native_closure_type, for_branch, branch_short); generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_native_closure_type, for_branch, branch_short);
return 1; return 1;

View File

@ -120,7 +120,7 @@ scheme_add1 (int argc, Scheme_Object *argv[])
return scheme_bignum_add1(o); return scheme_bignum_add1(o);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_add1(o); return scheme_rational_add1(o);
if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) if (t == scheme_complex_type)
return scheme_complex_add1(o); return scheme_complex_add1(o);
NEED_NUMBER(add1); NEED_NUMBER(add1);
@ -155,7 +155,7 @@ scheme_sub1 (int argc, Scheme_Object *argv[])
return scheme_bignum_sub1(o); return scheme_bignum_sub1(o);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_sub1(o); return scheme_rational_sub1(o);
if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) if (t == scheme_complex_type)
return scheme_complex_sub1(o); return scheme_complex_sub1(o);
NEED_NUMBER(sub1); NEED_NUMBER(sub1);
@ -374,10 +374,6 @@ scheme_abs(int argc, Scheme_Object *argv[])
else else
return scheme_rational_negate(o); return scheme_rational_negate(o);
} }
if (t == scheme_complex_izi_type) {
Scheme_Object *r = IZI_REAL_PART(o);
return scheme_abs(1, &r);
}
NEED_REAL(abs); NEED_REAL(abs);
@ -402,9 +398,6 @@ do_bin_quotient(const char *name, const Scheme_Object *n1, const Scheme_Object *
scheme_wrong_type(name, "integer", 1, 2, a); scheme_wrong_type(name, "integer", 1, 2, a);
} }
if (SCHEME_COMPLEX_IZIP(n1)) n1 = IZI_REAL_PART(n1);
if (SCHEME_COMPLEX_IZIP(n2)) n2 = IZI_REAL_PART(n2);
if (SCHEME_INTP(n2) && !SCHEME_INT_VAL(n2)) if (SCHEME_INTP(n2) && !SCHEME_INT_VAL(n2))
scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO,
"%s: undefined for 0", name); "%s: undefined for 0", name);
@ -508,9 +501,6 @@ rem_mod (int argc, Scheme_Object *argv[], char *name, int first_sign)
if (!scheme_is_integer(n2)) if (!scheme_is_integer(n2))
scheme_wrong_type(name, "integer", 1, argc, argv); scheme_wrong_type(name, "integer", 1, argc, argv);
if (SCHEME_COMPLEX_IZIP(n1)) n1 = IZI_REAL_PART(n1);
if (SCHEME_COMPLEX_IZIP(n2)) n2 = IZI_REAL_PART(n2);
if (SCHEME_INTP(n2) && !SCHEME_INT_VAL(n2)) if (SCHEME_INTP(n2) && !SCHEME_INT_VAL(n2))
scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO,
"%s: undefined for 0", name); "%s: undefined for 0", name);

View File

@ -64,6 +64,8 @@ static Scheme_Object *integer_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *exact_integer_p (int argc, Scheme_Object *argv[]); static Scheme_Object *exact_integer_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *exact_nonnegative_integer_p (int argc, Scheme_Object *argv[]); static Scheme_Object *exact_nonnegative_integer_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *exact_positive_integer_p (int argc, Scheme_Object *argv[]); static Scheme_Object *exact_positive_integer_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *fixnum_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *inexact_real_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *exact_p (int argc, Scheme_Object *argv[]); static Scheme_Object *exact_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *even_p (int argc, Scheme_Object *argv[]); static Scheme_Object *even_p (int argc, Scheme_Object *argv[]);
static Scheme_Object *bitwise_or (int argc, Scheme_Object *argv[]); static Scheme_Object *bitwise_or (int argc, Scheme_Object *argv[]);
@ -261,6 +263,14 @@ scheme_init_number (Scheme_Env *env)
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED; SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
scheme_add_global_constant("exact-positive-integer?", p, env); scheme_add_global_constant("exact-positive-integer?", p, env);
p = scheme_make_folding_prim(fixnum_p, "fixnum?", 1, 1, 1);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
scheme_add_global_constant("fixnum?", p, env);
p = scheme_make_folding_prim(inexact_real_p, "inexact-real?", 1, 1, 1);
SCHEME_PRIM_PROC_FLAGS(p) |= SCHEME_PRIM_IS_UNARY_INLINED;
scheme_add_global_constant("inexact-real?", p, env);
scheme_add_global_constant("exact?", scheme_add_global_constant("exact?",
scheme_make_folding_prim(exact_p, scheme_make_folding_prim(exact_p,
"exact?", "exact?",
@ -630,8 +640,6 @@ double scheme_real_to_double(Scheme_Object *r)
return scheme_bignum_to_double(r); return scheme_bignum_to_double(r);
else if (SCHEME_RATIONALP(r)) else if (SCHEME_RATIONALP(r))
return scheme_rational_to_double(r); return scheme_rational_to_double(r);
else if (SCHEME_COMPLEX_IZIP(r))
return scheme_real_to_double(IZI_REAL_PART(r));
else else
return 0.0; return 0.0;
} }
@ -646,6 +654,20 @@ int scheme_minus_zero_p(double d)
return minus_zero_p(d); return minus_zero_p(d);
} }
#ifdef MZ_USE_SINGLE_FLOATS
static int rational_flt_p(float f) {
return !(MZ_IS_NAN(f)
|| MZ_IS_POS_INFINITY(f)
|| MZ_IS_NEG_INFINITY(f));
}
#endif
static int rational_dbl_p(double f) {
return !(MZ_IS_NAN(f)
|| MZ_IS_POS_INFINITY(f)
|| MZ_IS_NEG_INFINITY(f));
}
#ifdef DEFEAT_FP_COMP_OPTIMIZATION #ifdef DEFEAT_FP_COMP_OPTIMIZATION
int scheme_both_nan(double a, double b) int scheme_both_nan(double a, double b)
{ {
@ -736,7 +758,11 @@ static Scheme_Object *
rational_p(int argc, Scheme_Object *argv[]) rational_p(int argc, Scheme_Object *argv[])
{ {
Scheme_Object *o = argv[0]; Scheme_Object *o = argv[0];
return (SCHEME_REALP(o) ? scheme_true : scheme_false);
if (SCHEME_FLOATP(o))
return (rational_dbl_p(SCHEME_FLOAT_VAL(o)) ? scheme_true : scheme_false);
else
return (SCHEME_REALP(o) ? scheme_true : scheme_false);
} }
int scheme_is_integer(const Scheme_Object *o) int scheme_is_integer(const Scheme_Object *o)
@ -751,13 +777,13 @@ int scheme_is_integer(const Scheme_Object *o)
if (MZ_IS_NAN(d)) if (MZ_IS_NAN(d))
return 0; return 0;
# endif # endif
if (MZ_IS_POS_INFINITY(d)
|| MZ_IS_NEG_INFINITY(d))
return 0;
if (floor(d) == d) if (floor(d) == d)
return 1; return 1;
} }
if (SCHEME_COMPLEX_IZIP(o))
return scheme_is_integer(IZI_REAL_PART(o));
return 0; return 0;
} }
@ -804,6 +830,26 @@ exact_positive_integer_p (int argc, Scheme_Object *argv[])
return scheme_false; return scheme_false;
} }
static Scheme_Object *
fixnum_p (int argc, Scheme_Object *argv[])
{
Scheme_Object *n = argv[0];
if (SCHEME_INTP(n))
return scheme_true;
else
return scheme_false;
}
static Scheme_Object *
inexact_real_p (int argc, Scheme_Object *argv[])
{
Scheme_Object *n = argv[0];
if (SCHEME_FLOATP(n))
return scheme_true;
else
return scheme_false;
}
int scheme_is_exact(const Scheme_Object *n) int scheme_is_exact(const Scheme_Object *n)
{ {
if (SCHEME_INTP(n)) { if (SCHEME_INTP(n)) {
@ -821,8 +867,6 @@ int scheme_is_exact(const Scheme_Object *n)
else if (type == scheme_float_type) else if (type == scheme_float_type)
return 0; return 0;
#endif #endif
else if (type == scheme_complex_izi_type)
return 0;
else { else {
return -1; return -1;
} }
@ -858,8 +902,6 @@ int scheme_is_inexact(const Scheme_Object *n)
else if (type == scheme_float_type) else if (type == scheme_float_type)
return 1; return 1;
#endif #endif
else if (type == scheme_complex_izi_type)
return 1;
else { else {
return -1; return -1;
} }
@ -888,10 +930,6 @@ scheme_odd_p (int argc, Scheme_Object *argv[])
return (SCHEME_INT_VAL(v) & 0x1) ? scheme_true : scheme_false; return (SCHEME_INT_VAL(v) & 0x1) ? scheme_true : scheme_false;
if (SCHEME_BIGNUMP(v)) if (SCHEME_BIGNUMP(v))
return (SCHEME_BIGDIG(v)[0] & 0x1) ? scheme_true : scheme_false; return (SCHEME_BIGDIG(v)[0] & 0x1) ? scheme_true : scheme_false;
if (SCHEME_COMPLEX_IZIP(v)) {
Scheme_Object *r = IZI_REAL_PART(v);
return scheme_odd_p(1, &r);
}
if (scheme_is_integer(v)) { if (scheme_is_integer(v)) {
double d = SCHEME_FLOAT_VAL(v); double d = SCHEME_FLOAT_VAL(v);
@ -914,10 +952,6 @@ even_p (int argc, Scheme_Object *argv[])
return (SCHEME_INT_VAL(v) & 0x1) ? scheme_false : scheme_true; return (SCHEME_INT_VAL(v) & 0x1) ? scheme_false : scheme_true;
if (SCHEME_BIGNUMP(v)) if (SCHEME_BIGNUMP(v))
return (SCHEME_BIGDIG(v)[0] & 0x1) ? scheme_false : scheme_true; return (SCHEME_BIGDIG(v)[0] & 0x1) ? scheme_false : scheme_true;
if (SCHEME_COMPLEX_IZIP(v)) {
Scheme_Object *r = IZI_REAL_PART(v);
return even_p(1, &r);
}
if (scheme_is_integer(v)) { if (scheme_is_integer(v)) {
double d = SCHEME_FLOAT_VAL(v); double d = SCHEME_FLOAT_VAL(v);
@ -939,9 +973,6 @@ GEN_NARY_OP(static, lcm, "lcm", bin_lcm, 1, scheme_is_integer, "integer")
Scheme_Object * Scheme_Object *
scheme_bin_gcd (const Scheme_Object *n1, const Scheme_Object *n2) scheme_bin_gcd (const Scheme_Object *n1, const Scheme_Object *n2)
{ {
if (SCHEME_COMPLEX_IZIP(n1)) n1 = IZI_REAL_PART(n1);
if (SCHEME_COMPLEX_IZIP(n2)) n2 = IZI_REAL_PART(n2);
if (SCHEME_INTP(n1) && SCHEME_INTP(n2)) { if (SCHEME_INTP(n1) && SCHEME_INTP(n2)) {
long i1, i2, a, b, r; long i1, i2, a, b, r;
@ -1061,19 +1092,21 @@ floor_prim (int argc, Scheme_Object *argv[])
return o; return o;
t = _SCHEME_TYPE(o); t = _SCHEME_TYPE(o);
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
if (t == scheme_float_type) if (t == scheme_float_type) {
return scheme_make_float(floor(SCHEME_FLT_VAL(o))); float d = SCHEME_FLT_VAL(o);
if (rational_flt_p((double)d))
return scheme_make_float(floor(d));
}
#endif #endif
if (t == scheme_double_type) if (t == scheme_double_type) {
return scheme_make_double(floor(SCHEME_DBL_VAL(o))); double d = SCHEME_DBL_VAL(o);
if (rational_dbl_p(d))
return scheme_make_double(floor(d));
}
if (t == scheme_bignum_type) if (t == scheme_bignum_type)
return o; return o;
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_floor(o); return scheme_rational_floor(o);
if (t == scheme_complex_izi_type) {
Scheme_Object *r = IZI_REAL_PART(o);
return floor_prim(1, &r);
}
NEED_REAL(floor); NEED_REAL(floor);
@ -1090,19 +1123,21 @@ ceiling (int argc, Scheme_Object *argv[])
return o; return o;
t = _SCHEME_TYPE(o); t = _SCHEME_TYPE(o);
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
if (t == scheme_float_type) if (t == scheme_float_type) {
return scheme_make_float(ceil(SCHEME_FLT_VAL(o))); float d = SCHEME_FLT_VAL(o);
if (rational_flt_p(d))
return scheme_make_float(ceil(d));
}
#endif #endif
if (t == scheme_double_type) if (t == scheme_double_type) {
return scheme_make_double(ceil(SCHEME_DBL_VAL(o))); double d = SCHEME_DBL_VAL(o);
if (rational_dbl_p(d))
return scheme_make_double(ceil(d));
}
if (t == scheme_bignum_type) if (t == scheme_bignum_type)
return o; return o;
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_ceiling(o); return scheme_rational_ceiling(o);
if (t == scheme_complex_izi_type) {
Scheme_Object *r = IZI_REAL_PART(o);
return ceiling(1, &r);
}
NEED_REAL(ceiling); NEED_REAL(ceiling);
@ -1121,29 +1156,29 @@ sch_truncate (int argc, Scheme_Object *argv[])
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
if (t == scheme_float_type) { if (t == scheme_float_type) {
float v = SCHEME_FLT_VAL(o); float v = SCHEME_FLT_VAL(o);
if (v > 0) if (rational_flt_p(v)) {
v = floor(v); if (v > 0)
else v = floor(v);
v = ceil(v); else
return scheme_make_float(v); v = ceil(v);
return scheme_make_float(v);
}
} }
#endif #endif
if (t == scheme_double_type) { if (t == scheme_double_type) {
double v = SCHEME_DBL_VAL(o); double v = SCHEME_DBL_VAL(o);
if (v > 0) if (rational_dbl_p(v)) {
v = floor(v); if (v > 0)
else v = floor(v);
v = ceil(v); else
return scheme_make_double(v); v = ceil(v);
return scheme_make_double(v);
}
} }
if (t == scheme_bignum_type) if (t == scheme_bignum_type)
return o; return o;
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_truncate(o); return scheme_rational_truncate(o);
if (t == scheme_complex_izi_type) {
Scheme_Object *r = IZI_REAL_PART(o);
return sch_truncate(1, &r);
}
NEED_REAL(truncate); NEED_REAL(truncate);
@ -1165,26 +1200,28 @@ sch_round (int argc, Scheme_Object *argv[])
double i, frac; double i, frac;
int invert; int invert;
if (d < 0) { if (rational_flt_p(d)) {
d = -d; if (d < 0) {
invert = 1; d = -d;
} else invert = 1;
invert = 0; } else
invert = 0;
frac = modf(d, &i); frac = modf(d, &i);
if (frac < 0.5) if (frac < 0.5)
d = i; d = i;
else if (frac > 0.5) else if (frac > 0.5)
d = i + 1; d = i + 1;
else if (fmod(i, 2.0) != 0.0) else if (fmod(i, 2.0) != 0.0)
d = i + 1; d = i + 1;
else else
d = i; d = i;
if (invert) if (invert)
d = -d; d = -d;
return scheme_make_float((float)d); return scheme_make_float((float)d);
}
} }
#endif #endif
if (t == scheme_double_type) { if (t == scheme_double_type) {
@ -1192,35 +1229,33 @@ sch_round (int argc, Scheme_Object *argv[])
double i, frac; double i, frac;
int invert; int invert;
if (d < 0) { if (rational_dbl_p(d)) {
d = -d; if (d < 0) {
invert = 1; d = -d;
} else invert = 1;
invert = 0; } else
invert = 0;
frac = modf(d, &i); frac = modf(d, &i);
if (frac < 0.5) if (frac < 0.5)
d = i; d = i;
else if (frac > 0.5) else if (frac > 0.5)
d = i + 1; d = i + 1;
else if (fmod(i, 2.0) != 0.0) else if (fmod(i, 2.0) != 0.0)
d = i + 1; d = i + 1;
else else
d = i; d = i;
if (invert) if (invert)
d = -d; d = -d;
return scheme_make_double(d); return scheme_make_double(d);
}
} }
if (t == scheme_bignum_type) if (t == scheme_bignum_type)
return o; return o;
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_round(o); return scheme_rational_round(o);
if (t == scheme_complex_izi_type) {
Scheme_Object *r = IZI_REAL_PART(o);
return sch_round(1, &r);
}
NEED_REAL(round); NEED_REAL(round);
@ -1246,8 +1281,6 @@ float TO_FLOAT_VAL(const Scheme_Object *n)
return scheme_bignum_to_float(n); return scheme_bignum_to_float(n);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_to_float(n); return scheme_rational_to_float(n);
if (t == scheme_complex_izi_type)
return TO_FLOAT_VAL(IZI_REAL_PART(n));
return 0.0f; return 0.0f;
} }
@ -1279,8 +1312,6 @@ double TO_DOUBLE_VAL(const Scheme_Object *n)
return scheme_bignum_to_double(n); return scheme_bignum_to_double(n);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_rational_to_double(n); return scheme_rational_to_double(n);
if (t == scheme_complex_izi_type)
return TO_DOUBLE_VAL(IZI_REAL_PART(n));
return 0.0; return 0.0;
} }
@ -1296,9 +1327,6 @@ Scheme_Object *scheme_TO_DOUBLE(const Scheme_Object *n)
Scheme_Object *scheme_TO_DOUBLE(const Scheme_Object *n) Scheme_Object *scheme_TO_DOUBLE(const Scheme_Object *n)
{ {
if (SCHEME_COMPLEX_IZIP(n))
n = IZI_REAL_PART(n);
return scheme_exact_to_inexact(1, (Scheme_Object **)&n); return scheme_exact_to_inexact(1, (Scheme_Object **)&n);
} }
@ -1319,33 +1347,21 @@ Scheme_Object *scheme_to_bignum(const Scheme_Object *o)
return (Scheme_Object *)o; return (Scheme_Object *)o;
} }
static Scheme_Object *get_frac(char *name, int low_p,
int argc, Scheme_Object *argv[]);
static Scheme_Object *get_frac(char *name, int low_p, static Scheme_Object *get_frac(char *name, int low_p,
int argc, Scheme_Object *argv[]) int argc, Scheme_Object *argv[])
{ {
Scheme_Object *n = argv[0], *orig; Scheme_Object *n = argv[0], *orig;
if (SCHEME_COMPLEX_IZIP(n)) n = IZI_REAL_PART(n);
orig = n; orig = n;
if (SCHEME_FLOATP(n)) { if (SCHEME_FLOATP(n)) {
double d = SCHEME_FLOAT_VAL(n); double d = SCHEME_FLOAT_VAL(n);
if (MZ_IS_NAN(d)) if (MZ_IS_NAN(d)
return n; || MZ_IS_POS_INFINITY(d)
else if (MZ_IS_POS_INFINITY(d) || MZ_IS_NEG_INFINITY(d)) {
|| MZ_IS_NEG_INFINITY(d)) { scheme_wrong_type(name, REAL_NUMBER_STR, 0, argc, argv);
if (low_p) { ESCAPED_BEFORE_HERE;
#ifdef MZ_USE_SINGLE_FLOATS
if (SCHEME_FLTP(n))
return scheme_make_float(1.0);
#endif
return scheme_make_double(1.0);
} else
return n;
} }
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
@ -1579,8 +1595,20 @@ double SCH_LOG(double d) { if (d == 0.0) return scheme_minus_infinity_val; else
#endif #endif
#define BIGNUM_LOG(o) return bignum_log(o); #define BIGNUM_LOG(o) return bignum_log(o);
static Scheme_Object *scheme_inf_plus_pi()
{
return scheme_make_complex(scheme_inf_object, scheme_pi);
}
#ifdef MZ_USE_SINGLE_FLOATS
static Scheme_Object *scheme_single_inf_plus_pi()
{
return scheme_make_complex(scheme_single_inf_object, scheme_single_pi);
}
#endif
GEN_UNARY_OP(exp_prim, exp, exp, scheme_inf_object, scheme_single_inf_object, scheme_zerod, scheme_zerof, scheme_nan_object, scheme_single_nan_object, complex_exp, GEN_ZERO_IS_ONE, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES) GEN_UNARY_OP(exp_prim, exp, exp, scheme_inf_object, scheme_single_inf_object, scheme_zerod, scheme_zerof, scheme_nan_object, scheme_single_nan_object, complex_exp, GEN_ZERO_IS_ONE, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES)
GEN_UNARY_OP(log_prim, log, SCH_LOG, scheme_inf_object, scheme_single_inf_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_log, GEN_ONE_IS_ZERO_AND_ZERO_IS_ERR, NEGATIVE_USES_COMPLEX, BIGNUM_LOG) GEN_UNARY_OP(log_prim, log, SCH_LOG, scheme_inf_object, scheme_single_inf_object, scheme_inf_plus_pi(), scheme_single_inf_plus_pi(), scheme_nan_object, scheme_single_nan_object, complex_log, GEN_ONE_IS_ZERO_AND_ZERO_IS_ERR, NEGATIVE_USES_COMPLEX, BIGNUM_LOG)
GEN_UNARY_OP(sin_prim, sin, SCH_SIN, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_sin, GEN_ZERO_IS_ZERO, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES) GEN_UNARY_OP(sin_prim, sin, SCH_SIN, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_sin, GEN_ZERO_IS_ZERO, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES)
GEN_UNARY_OP(cos_prim, cos, SCH_COS, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_cos, GEN_ZERO_IS_ONE, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES) GEN_UNARY_OP(cos_prim, cos, SCH_COS, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_cos, GEN_ZERO_IS_ONE, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES)
GEN_UNARY_OP(tan_prim, tan, SCH_TAN, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_tan, GEN_ZERO_IS_ZERO, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES) GEN_UNARY_OP(tan_prim, tan, SCH_TAN, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, scheme_nan_object, scheme_single_nan_object, complex_tan, GEN_ZERO_IS_ZERO, NEVER_RESORT_TO_COMPLEX, BIGNUMS_AS_DOUBLES)
@ -1604,8 +1632,6 @@ atan_prim (int argc, Scheme_Object *argv[])
n1 = argv[0]; n1 = argv[0];
if (SCHEME_COMPLEX_IZIP(n1)) n1 = IZI_REAL_PART(n1);
if (SCHEME_INTP(n1)) if (SCHEME_INTP(n1))
v = SCHEME_INT_VAL(n1); v = SCHEME_INT_VAL(n1);
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
@ -1648,8 +1674,6 @@ atan_prim (int argc, Scheme_Object *argv[])
ESCAPED_BEFORE_HERE; ESCAPED_BEFORE_HERE;
} }
if (SCHEME_COMPLEX_IZIP(n2)) n2 = IZI_REAL_PART(n2);
if (SCHEME_INTP(n2)) if (SCHEME_INTP(n2))
v2 = SCHEME_INT_VAL(n2); v2 = SCHEME_INT_VAL(n2);
#ifdef MZ_USE_SINGLE_FLOATS #ifdef MZ_USE_SINGLE_FLOATS
@ -1738,16 +1762,6 @@ Scheme_Object *scheme_sqrt (int argc, Scheme_Object *argv[])
n = argv[0]; n = argv[0];
/* Special case for x+0.0i: */
if (SCHEME_COMPLEX_IZIP(n)) {
Scheme_Object *r = IZI_REAL_PART(n), *v;
v = scheme_sqrt(1, &r);
if (!SCHEME_COMPLEXP(v))
return scheme_make_complex(v, scheme_complex_imaginary_part(n));
else
return v;
}
if (SCHEME_COMPLEXP(n)) if (SCHEME_COMPLEXP(n))
return scheme_complex_sqrt(n); return scheme_complex_sqrt(n);
@ -1790,22 +1804,7 @@ Scheme_Object *do_int_sqrt (const char *name, int argc, Scheme_Object *argv[], i
return NULL; return NULL;
} }
/* Special case for x+0.0i: */ if (SCHEME_INTP(v) || SCHEME_BIGNUMP(v)) {
if (SCHEME_COMPLEX_IZIP(v)) {
Scheme_Object *r = IZI_REAL_PART(v), *orig = v;
v = do_int_sqrt(name, 1, &r, w_rem);
if (w_rem) {
Scheme_Thread *p = scheme_current_thread;
v = p->ku.multiple.array[0];
rem = p->ku.multiple.array[1];
}
if (!SCHEME_COMPLEXP(v))
v = scheme_make_complex(v, scheme_complex_imaginary_part(orig));
if (w_rem && !SCHEME_COMPLEXP(rem))
rem = scheme_make_complex(rem, scheme_complex_imaginary_part(orig));
} else if (SCHEME_INTP(v) || SCHEME_BIGNUMP(v)) {
int imaginary = 0; int imaginary = 0;
if (scheme_is_negative(v)) { if (scheme_is_negative(v)) {
@ -2111,9 +2110,6 @@ static Scheme_Object *make_rectangular (int argc, Scheme_Object *argv[])
if (!SCHEME_REALP(b)) if (!SCHEME_REALP(b))
scheme_wrong_type("make-rectangular", REAL_NUMBER_STR, 1, argc, argv); scheme_wrong_type("make-rectangular", REAL_NUMBER_STR, 1, argc, argv);
if (SCHEME_COMPLEX_IZIP(a)) a = IZI_REAL_PART(a);
if (SCHEME_COMPLEX_IZIP(b)) b = IZI_REAL_PART(b);
af = SCHEME_FLOATP(a); af = SCHEME_FLOATP(a);
bf = SCHEME_FLOATP(b); bf = SCHEME_FLOATP(b);
@ -2143,9 +2139,6 @@ Scheme_Object *scheme_make_polar (int argc, Scheme_Object *argv[])
if (b == zeroi) if (b == zeroi)
return a; return a;
if (SCHEME_COMPLEX_IZIP(a)) a = IZI_REAL_PART(a);
if (SCHEME_COMPLEX_IZIP(b)) b = IZI_REAL_PART(b);
v = b; v = b;
r = scheme_bin_mult(a, cos_prim(1, &v)); r = scheme_bin_mult(a, cos_prim(1, &v));
@ -2339,7 +2332,7 @@ scheme_exact_to_inexact (int argc, Scheme_Object *argv[])
return scheme_make_double(scheme_rational_to_double(o)); return scheme_make_double(scheme_rational_to_double(o));
#endif #endif
} }
if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) { if (t == scheme_complex_type) {
Scheme_Object *realpart, *imaginarypart; Scheme_Object *realpart, *imaginarypart;
realpart = _scheme_complex_real_part(o); realpart = _scheme_complex_real_part(o);
@ -2387,7 +2380,7 @@ scheme_inexact_to_exact (int argc, Scheme_Object *argv[])
return o; return o;
if (t == scheme_rational_type) if (t == scheme_rational_type)
return o; return o;
if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) { if (t == scheme_complex_type) {
Scheme_Object *realpart, *imaginarypart; Scheme_Object *realpart, *imaginarypart;
realpart = _scheme_complex_real_part(o); realpart = _scheme_complex_real_part(o);

View File

@ -130,7 +130,7 @@ GEN_NARY_COMP(gt_eq, ">=", scheme_bin_gt_eq, SCHEME_REALP, REAL_NUMBER_STR)
#define COMP_IZI_LT_EQ(a, b) scheme_bin_lt_eq(IZI_REAL_PART(a), IZI_REAL_PART(b)) #define COMP_IZI_LT_EQ(a, b) scheme_bin_lt_eq(IZI_REAL_PART(a), IZI_REAL_PART(b))
#define COMP_IZI_GT_EQ(a, b) scheme_bin_gt_eq(IZI_REAL_PART(a), IZI_REAL_PART(b)) #define COMP_IZI_GT_EQ(a, b) scheme_bin_gt_eq(IZI_REAL_PART(a), IZI_REAL_PART(b))
#define GEN_IDENT_FOR_IZI GEN_IDENT #define GEN_IDENT_FOR_IZI GEN_OMIT
GEN_BIN_COMP(scheme_bin_eq, "=", EQUAL, EQUAL, scheme_bignum_eq, scheme_rational_eq, scheme_complex_eq, 0, 0, scheme_is_inexact, scheme_is_inexact, GEN_IDENT, GEN_IDENT, "number") GEN_BIN_COMP(scheme_bin_eq, "=", EQUAL, EQUAL, scheme_bignum_eq, scheme_rational_eq, scheme_complex_eq, 0, 0, scheme_is_inexact, scheme_is_inexact, GEN_IDENT, GEN_IDENT, "number")
GEN_BIN_COMP(scheme_bin_lt, "<", LESS_THAN, fLESS_THAN, scheme_bignum_lt, scheme_rational_lt, COMP_IZI_LT, 0, 1, scheme_is_positive, scheme_is_negative, GEN_IDENT_FOR_IZI, GEN_OMIT, REAL_NUMBER_STR) GEN_BIN_COMP(scheme_bin_lt, "<", LESS_THAN, fLESS_THAN, scheme_bignum_lt, scheme_rational_lt, COMP_IZI_LT, 0, 1, scheme_is_positive, scheme_is_negative, GEN_IDENT_FOR_IZI, GEN_OMIT, REAL_NUMBER_STR)
@ -143,8 +143,6 @@ scheme_is_zero(const Scheme_Object *o)
{ {
Scheme_Type t; Scheme_Type t;
top:
if (SCHEME_INTP(o)) if (SCHEME_INTP(o))
return o == zeroi; return o == zeroi;
t = _SCHEME_TYPE(o); t = _SCHEME_TYPE(o);
@ -164,10 +162,10 @@ scheme_is_zero(const Scheme_Object *o)
#endif #endif
return SCHEME_DBL_VAL(o) == 0.0; return SCHEME_DBL_VAL(o) == 0.0;
} }
if (t == scheme_complex_type) {
if (t == scheme_complex_izi_type) { if (scheme_is_zero(scheme_complex_imaginary_part(o)))
o = IZI_REAL_PART(o); return scheme_is_zero(scheme_complex_real_part(o));
goto top; return 0;
} }
if ((t >= scheme_bignum_type) && (t <= scheme_complex_type)) if ((t >= scheme_bignum_type) && (t <= scheme_complex_type))
@ -193,8 +191,6 @@ scheme_is_positive(const Scheme_Object *o)
{ {
Scheme_Type t; Scheme_Type t;
top:
if (SCHEME_INTP(o)) if (SCHEME_INTP(o))
return SCHEME_INT_VAL(o) > 0; return SCHEME_INT_VAL(o) > 0;
t = _SCHEME_TYPE(o); t = _SCHEME_TYPE(o);
@ -220,10 +216,6 @@ scheme_is_positive(const Scheme_Object *o)
return SCHEME_BIGPOS(o); return SCHEME_BIGPOS(o);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return scheme_is_rational_positive(o); return scheme_is_rational_positive(o);
if (t == scheme_complex_izi_type) {
o = IZI_REAL_PART(o);
goto top;
}
return -1; return -1;
} }
@ -245,8 +237,6 @@ scheme_is_negative(const Scheme_Object *o)
{ {
Scheme_Type t; Scheme_Type t;
top:
if (SCHEME_INTP(o)) if (SCHEME_INTP(o))
return SCHEME_INT_VAL(o) < 0; return SCHEME_INT_VAL(o) < 0;
t = _SCHEME_TYPE(o); t = _SCHEME_TYPE(o);
@ -272,10 +262,6 @@ scheme_is_negative(const Scheme_Object *o)
return !SCHEME_BIGPOS(o); return !SCHEME_BIGPOS(o);
if (t == scheme_rational_type) if (t == scheme_rational_type)
return !scheme_is_rational_positive(o); return !scheme_is_rational_positive(o);
if (t == scheme_complex_izi_type) {
o = IZI_REAL_PART(o);
goto top;
}
return -1; return -1;
} }

View File

@ -309,7 +309,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
return name ## __int_rat(n1, n2); \ return name ## __int_rat(n1, n2); \
} \ } \
complexwrap( \ complexwrap( \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ if (noniziwrap((t2 == scheme_complex_type))) { \
return name ## __int_comp(n1, n2); \ return name ## __int_comp(n1, n2); \
} \ } \
) \ ) \
@ -345,7 +345,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
return name ## __flt_rat(n1, n2); \ return name ## __flt_rat(n1, n2); \
} \ } \
complexwrap( \ complexwrap( \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ if (noniziwrap((t2 == scheme_complex_type))) { \
return name ## __flt_comp(n1, n2); \ return name ## __flt_comp(n1, n2); \
} \ } \
)\ )\
@ -381,8 +381,8 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
return name ## __dbl_rat(d1, n1, n2); \ return name ## __dbl_rat(d1, n1, n2); \
} \ } \
complexwrap( \ complexwrap( \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ if (noniziwrap((t2 == scheme_complex_type))) { \
return name ## __dbl_comp(d1, n1, n2); \ return name ## __dbl_comp(d1, n1, n2); \
} \ } \
)\ )\
return name ## __wrong_type(n2); \ return name ## __wrong_type(n2); \
@ -406,7 +406,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
if (t2 == scheme_rational_type) \ if (t2 == scheme_rational_type) \
return name ## __big_rat(n1, n2); \ return name ## __big_rat(n1, n2); \
complexwrap( \ complexwrap( \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ if (noniziwrap((t2 == scheme_complex_type))) { \
return name ## __big_comp(n1, n2); \ return name ## __big_comp(n1, n2); \
} \ } \
)\ )\
@ -431,14 +431,14 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
if (t2 == scheme_rational_type) \ if (t2 == scheme_rational_type) \
return rop((n1), (n2)); \ return rop((n1), (n2)); \
complexwrap( \ complexwrap( \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ if (noniziwrap((t2 == scheme_complex_type))) { \
return name ## __rat_comp(n1, n2); \ return name ## __rat_comp(n1, n2); \
} \ } \
)\ )\
return name ## __wrong_type(n2); \ return name ## __wrong_type(n2); \
} \ } \
complexwrap( \ complexwrap( \
else if (noniziwrap((t1 == scheme_complex_type) ||) (t1 == scheme_complex_izi_type)) \ else if (noniziwrap((t1 == scheme_complex_type))) \
{ \ { \
if (SCHEME_INTP(n2)) \ if (SCHEME_INTP(n2)) \
return name ## __comp_int(n1, n2); \ return name ## __comp_int(n1, n2); \
@ -455,7 +455,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \
return name ## __comp_big(n1, n2); \ return name ## __comp_big(n1, n2); \
if (t2 == scheme_rational_type) \ if (t2 == scheme_rational_type) \
return name ## __comp_rat(n1, n2); \ return name ## __comp_rat(n1, n2); \
if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) \ if (noniziwrap((t2 == scheme_complex_type))) \
return cxop((n1), (n2)); \ return cxop((n1), (n2)); \
return name ## __wrong_type(n2); \ return name ## __wrong_type(n2); \
} \ } \
@ -675,7 +675,7 @@ name (int argc, Scheme_Object *argv[]) \
BIGNUM_MODE(o) \ BIGNUM_MODE(o) \
} else if (t == scheme_rational_type) { \ } else if (t == scheme_rational_type) { \
d = scheme_rational_to_double(o); \ d = scheme_rational_to_double(o); \
} else if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) \ } else if (t == scheme_complex_type) \
return complex_fun(o); \ return complex_fun(o); \
else { \ else { \
scheme_wrong_type(#scheme_name, "number", 0, argc, argv); \ scheme_wrong_type(#scheme_name, "number", 0, argc, argv); \

View File

@ -2167,7 +2167,6 @@ long scheme_count_memory(Scheme_Object *root, Scheme_Hash_Table *ht)
e = COUNT(SCHEME_BOX_VAL(root)); e = COUNT(SCHEME_BOX_VAL(root));
break; break;
case scheme_complex_type: case scheme_complex_type:
case scheme_complex_izi_type:
s = sizeof(Scheme_Complex); s = sizeof(Scheme_Complex);
e = COUNT(((Scheme_Complex *)root)->r) + COUNT(((Scheme_Complex *)root)->i); e = COUNT(((Scheme_Complex *)root)->r) + COUNT(((Scheme_Complex *)root)->i);
break; break;

View File

@ -627,8 +627,8 @@ XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_rational_denominator(const Scheme
MZ_EXTERN Scheme_Object *scheme_make_complex(const Scheme_Object *r, const Scheme_Object *i); MZ_EXTERN Scheme_Object *scheme_make_complex(const Scheme_Object *r, const Scheme_Object *i);
MZ_EXTERN Scheme_Object *scheme_complex_normalize(const Scheme_Object *n); MZ_EXTERN Scheme_Object *scheme_complex_normalize(const Scheme_Object *n);
MZ_EXTERN Scheme_Object *scheme_complex_real_part(const Scheme_Object *n); XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_complex_real_part(const Scheme_Object *n);
MZ_EXTERN Scheme_Object *scheme_complex_imaginary_part(const Scheme_Object *n); XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_complex_imaginary_part(const Scheme_Object *n);
/* Exact/inexact: */ /* Exact/inexact: */
XFORM_NONGCING MZ_EXTERN int scheme_is_exact(const Scheme_Object *n); XFORM_NONGCING MZ_EXTERN int scheme_is_exact(const Scheme_Object *n);

View File

@ -13,7 +13,7 @@
#define USE_COMPILED_STARTUP 1 #define USE_COMPILED_STARTUP 1
#define EXPECTED_PRIM_COUNT 895 #define EXPECTED_PRIM_COUNT 897
#ifdef MZSCHEME_SOMETHING_OMITTED #ifdef MZSCHEME_SOMETHING_OMITTED
# undef USE_COMPILED_STARTUP # undef USE_COMPILED_STARTUP

View File

@ -13,12 +13,12 @@
consistently.) consistently.)
*/ */
#define MZSCHEME_VERSION "3.99.0.14" #define MZSCHEME_VERSION "3.99.0.16"
#define MZSCHEME_VERSION_X 3 #define MZSCHEME_VERSION_X 3
#define MZSCHEME_VERSION_Y 99 #define MZSCHEME_VERSION_Y 99
#define MZSCHEME_VERSION_Z 0 #define MZSCHEME_VERSION_Z 0
#define MZSCHEME_VERSION_W 14 #define MZSCHEME_VERSION_W 16
#define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y) #define MZSCHEME_VERSION_MAJOR ((MZSCHEME_VERSION_X * 100) + MZSCHEME_VERSION_Y)
#define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) #define MZSCHEME_VERSION_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W)

View File

@ -57,187 +57,186 @@ enum {
scheme_rational_type, /* 39 */ scheme_rational_type, /* 39 */
scheme_float_type, /* 40 */ scheme_float_type, /* 40 */
scheme_double_type, /* 41 */ scheme_double_type, /* 41 */
scheme_complex_izi_type, /* 42 */ scheme_complex_type, /* 42 */
scheme_complex_type, /* 43 */ scheme_char_string_type, /* 43 */
scheme_char_string_type, /* 44 */ scheme_byte_string_type, /* 44 */
scheme_byte_string_type, /* 45 */ scheme_unix_path_type, /* 45 */
scheme_unix_path_type, /* 46 */ scheme_windows_path_type, /* 46 */
scheme_windows_path_type, /* 47 */ scheme_symbol_type, /* 47 */
scheme_symbol_type, /* 48 */ scheme_keyword_type, /* 48 */
scheme_keyword_type, /* 49 */ scheme_null_type, /* 49 */
scheme_null_type, /* 50 */ scheme_pair_type, /* 50 */
scheme_pair_type, /* 51 */ scheme_mutable_pair_type, /* 51 */
scheme_mutable_pair_type, /* 52 */ scheme_vector_type, /* 52 */
scheme_vector_type, /* 53 */ scheme_inspector_type, /* 53 */
scheme_inspector_type, /* 54 */ scheme_input_port_type, /* 54 */
scheme_input_port_type, /* 55 */ scheme_output_port_type, /* 55 */
scheme_output_port_type, /* 56 */ scheme_eof_type, /* 56 */
scheme_eof_type, /* 57 */ scheme_true_type, /* 57 */
scheme_true_type, /* 58 */ scheme_false_type, /* 58 */
scheme_false_type, /* 59 */ scheme_void_type, /* 59 */
scheme_void_type, /* 60 */ scheme_syntax_compiler_type, /* 60 */
scheme_syntax_compiler_type, /* 61 */ scheme_macro_type, /* 61 */
scheme_macro_type, /* 62 */ scheme_box_type, /* 62 */
scheme_box_type, /* 63 */ scheme_thread_type, /* 63 */
scheme_thread_type, /* 64 */ scheme_stx_offset_type, /* 64 */
scheme_stx_offset_type, /* 65 */ scheme_cont_mark_set_type, /* 65 */
scheme_cont_mark_set_type, /* 66 */ scheme_sema_type, /* 66 */
scheme_sema_type, /* 67 */ scheme_hash_table_type, /* 67 */
scheme_hash_table_type, /* 68 */ scheme_cpointer_type, /* 68 */
scheme_cpointer_type, /* 69 */ scheme_offset_cpointer_type, /* 69 */
scheme_offset_cpointer_type, /* 70 */ scheme_weak_box_type, /* 70 */
scheme_weak_box_type, /* 71 */ scheme_ephemeron_type, /* 71 */
scheme_ephemeron_type, /* 72 */ scheme_struct_type_type, /* 72 */
scheme_struct_type_type, /* 73 */ scheme_module_index_type, /* 73 */
scheme_module_index_type, /* 74 */ scheme_set_macro_type, /* 74 */
scheme_set_macro_type, /* 75 */ scheme_listener_type, /* 75 */
scheme_listener_type, /* 76 */ scheme_namespace_type, /* 76 */
scheme_namespace_type, /* 77 */ scheme_config_type, /* 77 */
scheme_config_type, /* 78 */ scheme_stx_type, /* 78 */
scheme_stx_type, /* 79 */ scheme_will_executor_type, /* 79 */
scheme_will_executor_type, /* 80 */ scheme_custodian_type, /* 80 */
scheme_custodian_type, /* 81 */ scheme_random_state_type, /* 81 */
scheme_random_state_type, /* 82 */ scheme_regexp_type, /* 82 */
scheme_regexp_type, /* 83 */ scheme_bucket_type, /* 83 */
scheme_bucket_type, /* 84 */ scheme_bucket_table_type, /* 84 */
scheme_bucket_table_type, /* 85 */ scheme_subprocess_type, /* 85 */
scheme_subprocess_type, /* 86 */ scheme_compilation_top_type, /* 86 */
scheme_compilation_top_type, /* 87 */ scheme_wrap_chunk_type, /* 87 */
scheme_wrap_chunk_type, /* 88 */ scheme_eval_waiting_type, /* 88 */
scheme_eval_waiting_type, /* 89 */ scheme_tail_call_waiting_type, /* 89 */
scheme_tail_call_waiting_type, /* 90 */ scheme_undefined_type, /* 90 */
scheme_undefined_type, /* 91 */ scheme_struct_property_type, /* 91 */
scheme_struct_property_type, /* 92 */ scheme_multiple_values_type, /* 92 */
scheme_multiple_values_type, /* 93 */ scheme_placeholder_type, /* 93 */
scheme_placeholder_type, /* 94 */ scheme_table_placeholder_type, /* 94 */
scheme_table_placeholder_type, /* 95 */ scheme_case_lambda_sequence_type, /* 95 */
scheme_case_lambda_sequence_type, /* 96 */ scheme_begin0_sequence_type, /* 96 */
scheme_begin0_sequence_type, /* 97 */ scheme_rename_table_type, /* 97 */
scheme_rename_table_type, /* 98 */ scheme_rename_table_set_type, /* 98 */
scheme_rename_table_set_type, /* 99 */ scheme_module_type, /* 99 */
scheme_module_type, /* 100 */ scheme_svector_type, /* 100 */
scheme_svector_type, /* 101 */ scheme_lazy_macro_type, /* 101 */
scheme_lazy_macro_type, /* 102 */ scheme_resolve_prefix_type, /* 102 */
scheme_resolve_prefix_type, /* 103 */ scheme_security_guard_type, /* 103 */
scheme_security_guard_type, /* 104 */ scheme_indent_type, /* 104 */
scheme_indent_type, /* 105 */ scheme_udp_type, /* 105 */
scheme_udp_type, /* 106 */ scheme_udp_evt_type, /* 106 */
scheme_udp_evt_type, /* 107 */ scheme_tcp_accept_evt_type, /* 107 */
scheme_tcp_accept_evt_type, /* 108 */ scheme_id_macro_type, /* 108 */
scheme_id_macro_type, /* 109 */ scheme_evt_set_type, /* 109 */
scheme_evt_set_type, /* 110 */ scheme_wrap_evt_type, /* 110 */
scheme_wrap_evt_type, /* 111 */ scheme_handle_evt_type, /* 111 */
scheme_handle_evt_type, /* 112 */ scheme_nack_guard_evt_type, /* 112 */
scheme_nack_guard_evt_type, /* 113 */ scheme_semaphore_repost_type, /* 113 */
scheme_semaphore_repost_type, /* 114 */ scheme_channel_type, /* 114 */
scheme_channel_type, /* 115 */ scheme_channel_put_type, /* 115 */
scheme_channel_put_type, /* 116 */ scheme_thread_resume_type, /* 116 */
scheme_thread_resume_type, /* 117 */ scheme_thread_suspend_type, /* 117 */
scheme_thread_suspend_type, /* 118 */ scheme_thread_dead_type, /* 118 */
scheme_thread_dead_type, /* 119 */ scheme_poll_evt_type, /* 119 */
scheme_poll_evt_type, /* 120 */ scheme_nack_evt_type, /* 120 */
scheme_nack_evt_type, /* 121 */ scheme_module_registry_type, /* 121 */
scheme_module_registry_type, /* 122 */ scheme_thread_set_type, /* 122 */
scheme_thread_set_type, /* 123 */ scheme_string_converter_type, /* 123 */
scheme_string_converter_type, /* 124 */ scheme_alarm_type, /* 124 */
scheme_alarm_type, /* 125 */ scheme_thread_cell_type, /* 125 */
scheme_thread_cell_type, /* 126 */ scheme_channel_syncer_type, /* 126 */
scheme_channel_syncer_type, /* 127 */ scheme_special_comment_type, /* 127 */
scheme_special_comment_type, /* 128 */ scheme_write_evt_type, /* 128 */
scheme_write_evt_type, /* 129 */ scheme_always_evt_type, /* 129 */
scheme_always_evt_type, /* 130 */ scheme_never_evt_type, /* 130 */
scheme_never_evt_type, /* 131 */ scheme_progress_evt_type, /* 131 */
scheme_progress_evt_type, /* 132 */ scheme_certifications_type, /* 132 */
scheme_certifications_type, /* 133 */ scheme_already_comp_type, /* 133 */
scheme_already_comp_type, /* 134 */ scheme_readtable_type, /* 134 */
scheme_readtable_type, /* 135 */ scheme_intdef_context_type, /* 135 */
scheme_intdef_context_type, /* 136 */ scheme_lexical_rib_type, /* 136 */
scheme_lexical_rib_type, /* 137 */ scheme_thread_cell_values_type, /* 137 */
scheme_thread_cell_values_type, /* 138 */ scheme_global_ref_type, /* 138 */
scheme_global_ref_type, /* 139 */ scheme_cont_mark_chain_type, /* 139 */
scheme_cont_mark_chain_type, /* 140 */ scheme_raw_pair_type, /* 140 */
scheme_raw_pair_type, /* 141 */ scheme_prompt_type, /* 141 */
scheme_prompt_type, /* 142 */ scheme_prompt_tag_type, /* 142 */
scheme_prompt_tag_type, /* 143 */ scheme_expanded_syntax_type, /* 143 */
scheme_expanded_syntax_type, /* 144 */ scheme_delay_syntax_type, /* 144 */
scheme_delay_syntax_type, /* 145 */ scheme_cust_box_type, /* 145 */
scheme_cust_box_type, /* 146 */ scheme_resolved_module_path_type, /* 146 */
scheme_resolved_module_path_type, /* 147 */ scheme_module_phase_exports_type, /* 147 */
scheme_module_phase_exports_type, /* 148 */
#ifdef MZTAG_REQUIRED #ifdef MZTAG_REQUIRED
_scheme_last_normal_type_, /* 149 */ _scheme_last_normal_type_, /* 148 */
scheme_rt_weak_array, /* 150 */ scheme_rt_weak_array, /* 149 */
scheme_rt_comp_env, /* 151 */ scheme_rt_comp_env, /* 150 */
scheme_rt_constant_binding, /* 152 */ scheme_rt_constant_binding, /* 151 */
scheme_rt_resolve_info, /* 153 */ scheme_rt_resolve_info, /* 152 */
scheme_rt_optimize_info, /* 154 */ scheme_rt_optimize_info, /* 153 */
scheme_rt_compile_info, /* 155 */ scheme_rt_compile_info, /* 154 */
scheme_rt_cont_mark, /* 156 */ scheme_rt_cont_mark, /* 155 */
scheme_rt_saved_stack, /* 157 */ scheme_rt_saved_stack, /* 156 */
scheme_rt_reply_item, /* 158 */ scheme_rt_reply_item, /* 157 */
scheme_rt_closure_info, /* 159 */ scheme_rt_closure_info, /* 158 */
scheme_rt_overflow, /* 160 */ scheme_rt_overflow, /* 159 */
scheme_rt_overflow_jmp, /* 161 */ scheme_rt_overflow_jmp, /* 160 */
scheme_rt_meta_cont, /* 162 */ scheme_rt_meta_cont, /* 161 */
scheme_rt_dyn_wind_cell, /* 163 */ scheme_rt_dyn_wind_cell, /* 162 */
scheme_rt_dyn_wind_info, /* 164 */ scheme_rt_dyn_wind_info, /* 163 */
scheme_rt_dyn_wind, /* 165 */ scheme_rt_dyn_wind, /* 164 */
scheme_rt_dup_check, /* 166 */ scheme_rt_dup_check, /* 165 */
scheme_rt_thread_memory, /* 167 */ scheme_rt_thread_memory, /* 166 */
scheme_rt_input_file, /* 168 */ scheme_rt_input_file, /* 167 */
scheme_rt_input_fd, /* 169 */ scheme_rt_input_fd, /* 168 */
scheme_rt_oskit_console_input, /* 170 */ scheme_rt_oskit_console_input, /* 169 */
scheme_rt_tested_input_file, /* 171 */ scheme_rt_tested_input_file, /* 170 */
scheme_rt_tested_output_file, /* 172 */ scheme_rt_tested_output_file, /* 171 */
scheme_rt_indexed_string, /* 173 */ scheme_rt_indexed_string, /* 172 */
scheme_rt_output_file, /* 174 */ scheme_rt_output_file, /* 173 */
scheme_rt_load_handler_data, /* 175 */ scheme_rt_load_handler_data, /* 174 */
scheme_rt_pipe, /* 176 */ scheme_rt_pipe, /* 175 */
scheme_rt_beos_process, /* 177 */ scheme_rt_beos_process, /* 176 */
scheme_rt_system_child, /* 178 */ scheme_rt_system_child, /* 177 */
scheme_rt_tcp, /* 179 */ scheme_rt_tcp, /* 178 */
scheme_rt_write_data, /* 180 */ scheme_rt_write_data, /* 179 */
scheme_rt_tcp_select_info, /* 181 */ scheme_rt_tcp_select_info, /* 180 */
scheme_rt_namespace_option, /* 182 */ scheme_rt_namespace_option, /* 181 */
scheme_rt_param_data, /* 183 */ scheme_rt_param_data, /* 182 */
scheme_rt_will, /* 184 */ scheme_rt_will, /* 183 */
scheme_rt_will_registration, /* 185 */ scheme_rt_will_registration, /* 184 */
scheme_rt_struct_proc_info, /* 186 */ scheme_rt_struct_proc_info, /* 185 */
scheme_rt_linker_name, /* 187 */ scheme_rt_linker_name, /* 186 */
scheme_rt_param_map, /* 188 */ scheme_rt_param_map, /* 187 */
scheme_rt_finalization, /* 189 */ scheme_rt_finalization, /* 188 */
scheme_rt_finalizations, /* 190 */ scheme_rt_finalizations, /* 189 */
scheme_rt_cpp_object, /* 191 */ scheme_rt_cpp_object, /* 190 */
scheme_rt_cpp_array_object, /* 192 */ scheme_rt_cpp_array_object, /* 191 */
scheme_rt_stack_object, /* 193 */ scheme_rt_stack_object, /* 192 */
scheme_rt_preallocated_object, /* 194 */ scheme_rt_preallocated_object, /* 193 */
scheme_thread_hop_type, /* 195 */ scheme_thread_hop_type, /* 194 */
scheme_rt_srcloc, /* 196 */ scheme_rt_srcloc, /* 195 */
scheme_rt_evt, /* 197 */ scheme_rt_evt, /* 196 */
scheme_rt_syncing, /* 198 */ scheme_rt_syncing, /* 197 */
scheme_rt_comp_prefix, /* 199 */ scheme_rt_comp_prefix, /* 198 */
scheme_rt_user_input, /* 200 */ scheme_rt_user_input, /* 199 */
scheme_rt_user_output, /* 201 */ scheme_rt_user_output, /* 200 */
scheme_rt_compact_port, /* 202 */ scheme_rt_compact_port, /* 201 */
scheme_rt_read_special_dw, /* 203 */ scheme_rt_read_special_dw, /* 202 */
scheme_rt_regwork, /* 204 */ scheme_rt_regwork, /* 203 */
scheme_rt_buf_holder, /* 205 */ scheme_rt_buf_holder, /* 204 */
scheme_rt_parameterization, /* 206 */ scheme_rt_parameterization, /* 205 */
scheme_rt_print_params, /* 207 */ scheme_rt_print_params, /* 206 */
scheme_rt_read_params, /* 208 */ scheme_rt_read_params, /* 207 */
scheme_rt_native_code, /* 209 */ scheme_rt_native_code, /* 208 */
scheme_rt_native_code_plus_case, /* 210 */ scheme_rt_native_code_plus_case, /* 209 */
scheme_rt_jitter_data, /* 211 */ scheme_rt_jitter_data, /* 210 */
scheme_rt_module_exports, /* 212 */ scheme_rt_module_exports, /* 211 */
scheme_rt_delay_load_info, /* 213 */ scheme_rt_delay_load_info, /* 212 */
scheme_rt_marshal_info, /* 214 */ scheme_rt_marshal_info, /* 213 */
scheme_rt_unmarshal_info, /* 215 */ scheme_rt_unmarshal_info, /* 214 */
scheme_rt_runstack, /* 216 */ scheme_rt_runstack, /* 215 */
scheme_rt_sfs_info, /* 217 */ scheme_rt_sfs_info, /* 216 */
scheme_rt_validate_clearing, /* 218 */ scheme_rt_validate_clearing, /* 217 */
#endif #endif
_scheme_last_type_ _scheme_last_type_

View File

@ -177,7 +177,6 @@ scheme_init_type (Scheme_Env *env)
set_name(scheme_ephemeron_type, "<ephemeron>"); set_name(scheme_ephemeron_type, "<ephemeron>");
set_name(scheme_rational_type, "<fractional-number>"); set_name(scheme_rational_type, "<fractional-number>");
set_name(scheme_complex_type, "<complex-number>"); set_name(scheme_complex_type, "<complex-number>");
set_name(scheme_complex_izi_type, "<inexactly-real-number>");
set_name(scheme_struct_type_type, "<struct-type>"); set_name(scheme_struct_type_type, "<struct-type>");
set_name(scheme_listener_type, "<tcp-listener>"); set_name(scheme_listener_type, "<tcp-listener>");
set_name(scheme_tcp_accept_evt_type, "<tcp-accept-evt>"); set_name(scheme_tcp_accept_evt_type, "<tcp-accept-evt>");
@ -513,7 +512,6 @@ void scheme_register_traversers(void)
GC_REG_TRAV(scheme_rational_type, rational_obj); GC_REG_TRAV(scheme_rational_type, rational_obj);
GC_REG_TRAV(scheme_float_type, float_obj); GC_REG_TRAV(scheme_float_type, float_obj);
GC_REG_TRAV(scheme_double_type, double_obj); GC_REG_TRAV(scheme_double_type, double_obj);
GC_REG_TRAV(scheme_complex_izi_type, complex_obj);
GC_REG_TRAV(scheme_complex_type, complex_obj); GC_REG_TRAV(scheme_complex_type, complex_obj);
GC_REG_TRAV(scheme_char_string_type, string_obj); GC_REG_TRAV(scheme_char_string_type, string_obj);
GC_REG_TRAV(scheme_byte_string_type, bstring_obj); GC_REG_TRAV(scheme_byte_string_type, bstring_obj);