diff --git a/collects/r6rs/main.ss b/collects/r6rs/main.ss index 4918113b63..0c69b24bb6 100644 --- a/collects/r6rs/main.ss +++ b/collects/r6rs/main.ss @@ -8,7 +8,7 @@ FIXME: (require (for-syntax scheme/base syntax/kerncase - "private/find-version.ss" + (prefix-in parse: "private/parse-ref.ss") scheme/provide-transform)) (provide (rename-out [module-begin #%module-begin])) @@ -169,83 +169,18 @@ FIXME: ;; ---------------------------------------- ;; 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) - (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) - (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)])) + (datum->syntax + orig + `(,#'lib + ,(parse:parse-library-reference stx + (lambda (msg) + (raise-syntax-error + #f + msg + orig + stx)))) + orig)) (define-for-syntax (parse-import-set orig stx) (define (bad) diff --git a/collects/r6rs/private/parse-ref.ss b/collects/r6rs/private/parse-ref.ss new file mode 100644 index 0000000000..e714d475e3 --- /dev/null +++ b/collects/r6rs/private/parse-ref.ss @@ -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")])) diff --git a/collects/rnrs/arithmetic/fixnums-6.ss b/collects/rnrs/arithmetic/fixnums-6.ss index 01be1e2cef..155c7ccaf9 100644 --- a/collects/rnrs/arithmetic/fixnums-6.ss +++ b/collects/rnrs/arithmetic/fixnums-6.ss @@ -13,20 +13,11 @@ greatest-fixnum) ;; Many other provides from macros below -(define (fixnum-width) 30) -(define (least-fixnum) -1073741824) -(define (greatest-fixnum) +1073741824) +(define 64-bit? (fixnum? (expt 2 33))) -(define (r6rs:fixnum? v) - (and (exact-integer? v) - (<= -1073741824 v 1073741823))) - -(define-syntax fixnum? - (inline-rules - r6rs:fixnum? - [(_ a) (let ([v a]) - (and (exact-integer? v) - (<= -1073741824 v 1073741823)))])) +(define (fixnum-width) (if 64-bit? 62 30)) +(define (least-fixnum) (if 64-bit? (- (expt 2 62)) -1073741824)) +(define (greatest-fixnum) (if 64-bit? (- (expt 2 62) 1) +1073741823)) (define-syntax-rule (check v alt) (if (fixnum? v) diff --git a/collects/rnrs/arithmetic/flonums-6.ss b/collects/rnrs/arithmetic/flonums-6.ss index 497ec4afb1..a972028e00 100644 --- a/collects/rnrs/arithmetic/flonums-6.ss +++ b/collects/rnrs/arithmetic/flonums-6.ss @@ -11,23 +11,14 @@ r6rs/private/num-inline (for-syntax r6rs/private/inline-rules)) -(provide flonum? +(provide (rename-out [inexact-real? flonum?]) real->flonum &no-infinities make-no-infinities-violation no-infinities-violation? &no-nans make-no-nans-violation no-nans-violation? fixnum->flonum) ;; More provided via macros -(define (r6rs:flonum? v) - (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-inliner define-fl inexact-real? "flonum") (define-fl = fl=? (a b c ...) nocheck) (define-fl > fl>? (a b c ...) nocheck) diff --git a/collects/rnrs/base-6.ss b/collects/rnrs/base-6.ss index a76ec471d1..8742d5f6f9 100644 --- a/collects/rnrs/base-6.ss +++ b/collects/rnrs/base-6.ss @@ -46,13 +46,8 @@ procedure? ;; 11.7.4 - number? complex? - (rename-out [r6rs:real? real?] - [r6rs:rational? rational?] - [r6rs:integer? integer?] - [real? real-valued?] - [rational? rational-valued?] - [integer? integer-valued?]) + number? complex? real? rational? integer? + real-valued? rational-valued? integer-valued? exact? inexact? (rename-out [inexact->exact exact] [exact->inexact inexact]) @@ -177,24 +172,27 @@ ;; ---------------------------------------- -(define (r6rs:real? n) - (and (real? n) - (exact? (imag-part n)))) +(define (real-valued? o) + (or (real? o) + (and (complex? o) + (zero? (imag-part o))))) -(define (r6rs:rational? n) - (and (rational? n) - (r6rs:real? n) - (not (and (inexact? n) - (or (eqv? n +inf.0) - (eqv? n -inf.0) - (eqv? n +nan.0)))))) +(define (rational-valued? o) + (or (rational? o) + (and (complex? o) + (zero? (imag-part o)) + (rational? (real-part o))))) -(define (r6rs:integer? n) - (and (integer? n) - (r6rs:rational? n))) +(define (integer-valued? o) + (or (integer? o) + (and (complex? o) + (zero? (imag-part o)) + (integer? (real-part o))))) (define (finite? n) - (r6rs:real? n)) + (not (or (eqv? n +inf.0) + (eqv? n -inf.0) + (eqv? n +nan.0)))) (define (infinite? n) (or (eqv? n +inf.0) diff --git a/collects/rnrs/eval-6.ss b/collects/rnrs/eval-6.ss new file mode 100644 index 0000000000..bf39faa894 --- /dev/null +++ b/collects/rnrs/eval-6.ss @@ -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))) + diff --git a/collects/scribblings/reference/numbers.scrbl b/collects/scribblings/reference/numbers.scrbl index 84d66234af..dcafc0483d 100644 --- a/collects/scribblings/reference/numbers.scrbl +++ b/collects/scribblings/reference/numbers.scrbl @@ -11,9 +11,12 @@ All numbers are @deftech{complex numbers}. Some of them are @deftech{real numbers}, and all of the real numbers that can be -represented are also @deftech{rational numbers}. Among the real -numbers, some are @deftech{integers}, because @scheme[round] applied -to the number produces the same number. +represented are also @deftech{rational numbers}, except for +@as-index{@scheme[+inf.0]} (positive @as-index{infinity}), +@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 @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 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 -part (inexact or exact) is a real number. +and an inexact imaginary part; a complex number with an exact zero +imaginary part is a real number. Inexact real numbers are implemented as either single- or 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. Inexact numbers can be coerced to exact form, except for the inexact -numbers @as-index{@scheme[+inf.0]} (positive @as-index{infinity}), -@as-index{@scheme[-inf.0]} (negative infinity), and -@as-index{@scheme[+nan.0]} (@as-index{not-a-number}), which have no -exact form. @index["division by inexact zero"]{Dividing} a number by -exact zero raises an exception; dividing a non-zero number other than -@scheme[+nan.0] by an inexact zero returns @scheme[+inf.0] or -@scheme[-inf.0], depending on the sign of the dividend. The +numbers @scheme[+inf.0], @scheme[-inf.0], and @scheme[+nan.0], which +have no exact form. @index["division by inexact zero"]{Dividing} a +number by exact zero raises an exception; dividing a non-zero number +other than @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 answer @scheme[#t] for both @scheme[even?] and @scheme[odd?]. The @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? #, - @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 - a real number, @scheme[#f] otherwise. A number with an inexact zero - imaginary part is a real number. + a @techlink{real number}, @scheme[#f] otherwise. -@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? #, - @scheme[v])].} +@defproc[(rational? [v any/c]) boolean?]{ Returns @scheme[#t] if + @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] - is a number that is an integer, @scheme[#f] otherwise. The inexact - numbers @scheme[+inf.0] and @scheme[-inf.0] are integers, but - @scheme[+nan.0] is not. + is a number that is an @techlink{integer}, @scheme[#f] otherwise. -@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?]{ @@ -127,6 +129,17 @@ Returns @scheme[(and (exact-integer? v) (positive? v))]. @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)]. @examples[(zero? 0) (zero? -0.0)]} @@ -405,7 +418,7 @@ used. @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 @scheme[(* (integer-sqrt (- n)) 0+i)]. diff --git a/collects/tests/mzscheme/number.ss b/collects/tests/mzscheme/number.ss index 962da2dcd0..2e17c5d444 100644 --- a/collects/tests/mzscheme/number.ss +++ b/collects/tests/mzscheme/number.ss @@ -47,14 +47,14 @@ (test #t number? 3.0+0.0i) (test #t complex? 3.0+0.0i) -(test #t real? 3.0+0.0i) -(test #t rational? 3.0+0.0i) -(test #t integer? 3.0+0.0i) +(test #f real? 3.0+0.0i) +(test #f rational? 3.0+0.0i) +(test #f integer? 3.0+0.0i) (test #t number? 3.1+0.0i) (test #t complex? 3.1+0.0i) -(test #t real? 3.1+0.0i) -(test #t rational? 3.1+0.0i) +(test #f real? 3.1+0.0i) +(test #f rational? 3.1+0.0i) (test #f integer? 3.1+0.0i) (test #t exact? 3) @@ -84,19 +84,19 @@ (test #t number? +inf.0) (test #t complex? +inf.0) (test #t real? +inf.0) -(test #t rational? +inf.0) -(test #t integer? +inf.0) +(test #f rational? +inf.0) +(test #f integer? +inf.0) (test #t number? -inf.0) (test #t complex? -inf.0) (test #t real? -inf.0) -(test #t rational? -inf.0) -(test #t integer? -inf.0) +(test #f rational? -inf.0) +(test #f integer? -inf.0) (test #t number? +nan.0) (test #t complex? +nan.0) (test #t real? +nan.0) -(test #t rational? +nan.0) +(test #f rational? +nan.0) (test #f integer? +nan.0) (arity-test inexact? 1 1) @@ -204,7 +204,14 @@ (test-compare 1 11922615739/10210200 3000) (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))) @@ -273,7 +280,7 @@ (test-nan +nan.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 (make-rectangular +inf.0 -inf.0)) @@ -375,8 +382,6 @@ (test #t positive? +inf.0) (test #f positive? -inf.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 #f positive? (expt -2 37)) (test #f negative? 4) @@ -393,16 +398,16 @@ (test #f negative? +inf.0) (test #t negative? -inf.0) (test #f negative? +nan.0) -(test #f negative? 5+0.0i) -(test #t negative? -5+0.0i) +(err/rt-test (negative? 5+0.0i)) +(err/rt-test (negative? -5+0.0i)) (test #t odd? 3) (test #f odd? 2) (test #f odd? -4) (test #t odd? -1) -(test #t odd? +inf.0) -(test #t odd? -inf.0) -(test #t odd? 5+0.0i) -(test #f odd? 4+0.0i) +(err/rt-test (odd? +inf.0)) +(err/rt-test (odd? -inf.0)) +(err/rt-test (odd? 5+0.0i)) +(err/rt-test (odd? 4+0.0i)) (test #f odd? (expt 2 37)) (test #f odd? (expt -2 37)) (test #t odd? (add1 (expt 2 37))) @@ -411,10 +416,10 @@ (test #t even? 2) (test #t even? -4) (test #f even? -1) -(test #t even? +inf.0) -(test #t even? -inf.0) -(test #t even? 4+0.0i) -(test #f even? 5+0.0i) +(err/rt-test (even? +inf.0)) +(err/rt-test (even? -inf.0)) +(err/rt-test (even? 4+0.0i)) +(err/rt-test (even? 5+0.0i)) (test #t even? (expt 2 37)) (test #t even? (expt -2 37)) (test #f even? (add1 (expt 2 37))) @@ -426,6 +431,8 @@ (arity-test odd? 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 (negative? 2+i)) (err/rt-test (odd? 4.1)) @@ -459,14 +466,14 @@ (test -inf.0 min +inf.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 9.0 min 9.0+0.0i 100) -(test 8.0 min 9.0+0.0i 8) -(test 9.0 min 100 9.0+0.0i) -(test 8.0 min 8 9.0+0.0i) -(test 100.0 max 9.0+0.0i 100) -(test 9.0 max 9.0+0.0i 8) -(test 100.0 max 100 9.0+0.0i) -(test 9.0 max 8 9.0+0.0i) +(err/rt-test (min 9.0+0.0i 100)) +(err/rt-test (min 9.0+0.0i 8)) +(err/rt-test (min 100 9.0+0.0i)) +(err/rt-test (min 8 9.0+0.0i)) +(err/rt-test (max 9.0+0.0i 100)) +(err/rt-test (max 9.0+0.0i 8)) +(err/rt-test (max 100 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 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-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) @@ -837,8 +844,8 @@ (test 5.0 quotient -35 -7.0) (test -5.0 quotient -36 7.0) (test -5.0 quotient 36.0 -7) -(test -5.0 quotient 36.0 -7+0.0i) -(test -5.0 quotient 36.0+0.0i -7) +(err/rt-test (quotient 36.0 -7+0.0i)) +(err/rt-test (quotient 36.0+0.0i -7)) (test 0 quotient 0 5.0) (test 0 quotient 0 -5.0) (test 1 modulo 13 4) @@ -857,10 +864,10 @@ (test -1 remainder -13 -4) (test -1.0 modulo -13 -4.0) (test -1.0 remainder -13 -4.0) -(test -1.0 modulo -13 -4.0+0.0i) -(test -1.0 remainder -13 -4.0+0.0i) -(test -1.0 modulo -13+0.0i -4.0) -(test -1.0 remainder -13+0.0i -4.0) +(err/rt-test (modulo -13 -4.0+0.0i)) +(err/rt-test (remainder -13 -4.0+0.0i)) +(err/rt-test (modulo -13+0.0i -4.0)) +(err/rt-test (remainder -13+0.0i -4.0)) (test -2 remainder -3333333332 -3) (test -2 modulo -3333333332 -3) (test 2 remainder 3333333332 -3) @@ -908,47 +915,37 @@ (define (test-qrm-inf v) (define iv (exact->inexact v)) - (test 0.0 quotient v +inf.0) - (test -0.0 quotient v -inf.0) - (test iv remainder v +inf.0) - (test iv remainder v -inf.0) - (test iv modulo v +inf.0) - (test -inf.0 modulo v -inf.0) + (err/rt-test (quotient v +inf.0)) + (err/rt-test (quotient v -inf.0)) + (err/rt-test (remainder v +inf.0)) + (err/rt-test (remainder v -inf.0)) + (err/rt-test (modulo v +inf.0)) + (err/rt-test (modulo v -inf.0)) - (test +inf.0 quotient +inf.0 v) - (test -inf.0 quotient -inf.0 v) - (test 0.0 remainder +inf.0 v) - (test 0.0 remainder -inf.0 v) - (test 0.0 modulo +inf.0 v) - (test 0.0 modulo -inf.0 v)) + (err/rt-test (quotient +inf.0 v)) + (err/rt-test (quotient -inf.0 v)) + (err/rt-test (remainder +inf.0 v)) + (err/rt-test (remainder -inf.0 v)) + (err/rt-test (modulo +inf.0 v)) + (err/rt-test (modulo -inf.0 v))) (test-qrm-inf 9) (test-qrm-inf 9.0) (test-qrm-inf (expt 2 100)) +(test-qrm-inf 0.0) +(test-qrm-inf -0.0) ;; 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 +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 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 +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 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 +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) @@ -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+0.0i 10) -(test 5.0 gcd 5.0 10+0.0i) +(err/rt-test (gcd 5.0+0.0i 10)) +(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))) @@ -1128,8 +1125,6 @@ (test 6 gcd 66 (* 3 (expt 2 100))) (test 201.0 gcd (* 67 (expt 3 20)) (* 67. 3)) (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 0 (expt 9 35)) (test 288 lcm 32 -36) @@ -1138,8 +1133,8 @@ (test 5 lcm 5) (test 0 lcm 123 0) (test 30.0 lcm 5 6.0) -(test 30.0 lcm 5 6.0+0.0i) -(test 30.0 lcm 5+0.0i 6.0) +(err/rt-test (lcm 5 6.0+0.0i)) +(err/rt-test (lcm 5+0.0i 6.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)) @@ -1147,10 +1142,14 @@ (test (* (expt 2 37) (expt 9 35)) lcm (expt 9 35) (- (expt 6 37))) (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 1)) (err/rt-test (gcd 1 'a)) (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 1)) (err/rt-test (lcm 1 'a)) @@ -1168,6 +1167,10 @@ (err/rt-test (gcd 5.0 +nan.0)) (err/rt-test (lcm +nan.0 5.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 lcm 0 -1) @@ -1240,10 +1243,22 @@ (test 4.0 round 3.5) (test -4.0 round -3.5) -(test 2.0 floor 2.6+0.0i) -(test 3.0 ceiling 2.6+0.0i) -(test 3.0 round 2.6+0.0i) -(test 2.0 truncate 2.6+0.0i) +(err/rt-test (floor 2.6+0.0i)) +(err/rt-test (ceiling 2.6+0.0i)) +(err/rt-test (round 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) (test v floor v) @@ -1254,13 +1269,6 @@ (test-fcrt-int 2) (test-fcrt-int 2.0) (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 floor 1 1) @@ -1280,21 +1288,21 @@ (test 5 numerator 5) (test 5000000000000 numerator 5000000000000) (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 5000000000000) (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 3 denominator 2/3) (test 1000.0 round (* 10000.0 (/ (numerator 0.1) (denominator 0.1)))) -(test +inf.0 numerator +inf.0) -(test -inf.0 numerator -inf.0) -(test-nan.0 numerator +nan.0) -(test 1.0 denominator +inf.0) -(test 1.0 denominator -inf.0) -(test-nan.0 denominator +nan.0) +(err/rt-test (numerator +inf.0)) +(err/rt-test (numerator -inf.0)) +(err/rt-test (numerator +nan.0)) +(err/rt-test (denominator +inf.0)) +(err/rt-test (denominator -inf.0)) +(err/rt-test (denominator +nan.0)) (err/rt-test (numerator 'a)) (err/rt-test (numerator 1+2i)) @@ -1312,8 +1320,8 @@ (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+0.0i 2) -(test 1.0+2.0i make-rectangular 1.0 2+0.0i) +(err/rt-test (make-rectangular 1.0+0.0i 2)) +(err/rt-test (make-rectangular 1.0 2+0.0i)) (test-nan.0 real-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)) @@ -1414,8 +1422,8 @@ (test 1.0+0.0i 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+0.0i) -(test 1.0+0.0i make-polar 1.0+0.0i 0.0) +(err/rt-test (make-polar 1.0 0.0+0.0i)) +(err/rt-test (make-polar 1.0+0.0i 0.0)) (let ([v (make-polar 1 1)]) (test 5403.0 floor (* 10000 (real-part v))) (test 84147.0 floor (* 100000 (imag-part v))) @@ -1508,8 +1516,8 @@ (test 2.0 integer-sqrt 5.0) (test 0+2.0i integer-sqrt -5.0) -(test 2.0+0.0i 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 -5.0+0.0i)) (err/rt-test (integer-sqrt "a")) (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 '(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) -(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 -5.0+0.0i)) (err/rt-test (integer-sqrt/remainder "a")) (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.0 round (* 1000 (asin (sin 1/8)))) (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 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+0.0i))) -(test 785.0 round (* 1000 (atan 1.0+0.0i 1.0))) +(err/rt-test (atan 1.0 1.0+0.0i)) +(err/rt-test (atan 1.0+0.0i 1.0)) (test 2356.0 round (* 1000 (atan 1 -1))) (test -785.0 round (* 1000 (atan -1 1))) (test 785.0 round (* 1000 (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) (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 -512.0 round (expt -2.0 9.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 exp 0) @@ -1701,6 +1709,10 @@ (test 0.0 log 1.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?) (test 1 cos 0) @@ -1731,6 +1743,8 @@ (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 2) round (* 100 (atan +inf.0))) +(test (/ -314.0 2) round (* 100 (atan -inf.0))) (test 71034.0 round (* 100 (log 312918491891666147403524564598095080760332972643192197862041633988540637438735086398143104076897116667450730097183397289314559387355872839339937813881411504027225774279272518360586167057501686099965513263132778526566297754301647311975918380842568054630540214544682491386730004162058539391336047825248736472519))) (test 71117.0 round (* 100 (log (expt 2 1026)))) @@ -1832,8 +1846,8 @@ (test 1/3 rationalize 3/10 -1/10) (test 0 rationalize 3/10 4/10) (test 0.0 rationalize .3 4/10) -(test 0.0 rationalize .3+0.0i 4/10) -(test #i1/3 rationalize .3+0.0i 1/10) +(err/rt-test (rationalize .3+0.0i 4/10)) +(err/rt-test (rationalize .3+0.0i 1/10)) (define (test-rat-inf v) (define zero (if (exact? v) 0 0.0)) @@ -2587,8 +2601,8 @@ (define (there-and-back n) (floating-point-bytes->real (real->floating-point-bytes n 8))) -(test 1.0 there-and-back 1.0+0.0i) -(test 100.0 there-and-back 100.0+0.0i) +(err/rt-test (there-and-back 1.0+0.0i)) +(err/rt-test (there-and-back 100.0+0.0i)) (test 101.0 there-and-back 101) (test 1e30 there-and-back 1000000000000000000000000000000) (test 0.5 there-and-back 1/2) diff --git a/doc/release-notes/mzscheme/MzScheme_4.txt b/doc/release-notes/mzscheme/MzScheme_4.txt index fe4275763d..9e0bb1c0c4 100644 --- a/doc/release-notes/mzscheme/MzScheme_4.txt +++ b/doc/release-notes/mzscheme/MzScheme_4.txt @@ -101,6 +101,10 @@ but we start with an enumeration of changes: when given a cyclic value, and non-cyclic graph structure (though 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 the `mzscheme' language, beware that `if' in expansions is the `if' of `scheme/base'. When using the `scheme/base' language, beware diff --git a/src/mzscheme/gc2/gc2_obj.h b/src/mzscheme/gc2/gc2_obj.h new file mode 100644 index 0000000000..ef14daa2e9 --- /dev/null +++ b/src/mzscheme/gc2/gc2_obj.h @@ -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 diff --git a/src/mzscheme/gc2/newgc.c b/src/mzscheme/gc2/newgc.c index 508412cefd..2616214967 100644 --- a/src/mzscheme/gc2/newgc.c +++ b/src/mzscheme/gc2/newgc.c @@ -98,11 +98,8 @@ /* 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. Under Windows as of 2008, however, the allocation granularity is 64k. */ -#ifdef _WIN32 -# define LOG_APAGE_SIZE 16 -#else -# define LOG_APAGE_SIZE 14 -#endif +/* # define LOG_APAGE_SIZE ... see gc2_obj.h */ +#include "gc2_obj.h" /* the number of tags to use for tagged objects */ #define NUMBER_OF_TAGS 512 @@ -214,18 +211,7 @@ int GC_mtrace_union_current_with(int newval) /* Allocation */ /*****************************************************************************/ -struct objhead { - 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 objhead is defined in gc2_obj.h */ struct mpage { struct mpage *next, *prev; @@ -389,6 +375,11 @@ inline static struct mpage *find_page(void *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) { sizeb += APAGE_SIZE - 1; diff --git a/src/mzscheme/include/scheme.h b/src/mzscheme/include/scheme.h index b0758ce03c..f2a19e8be6 100644 --- a/src/mzscheme/include/scheme.h +++ b/src/mzscheme/include/scheme.h @@ -378,11 +378,10 @@ typedef long (*Scheme_Secondary_Hash_Proc)(Scheme_Object *obj, void *cycle_data) #endif #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_COMPLEXP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) >= scheme_complex_izi_type) && (_SCHEME_TYPE(obj) <= scheme_complex_type))) -#define SCHEME_COMPLEX_IZIP(obj) (SCHEME_TYPE(obj) == scheme_complex_izi_type) +#define SCHEME_COMPLEXP(obj) (!SCHEME_INTP(obj) && ((_SCHEME_TYPE(obj) == scheme_complex_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_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_CHAR_STRINGP(obj) SAME_TYPE(SCHEME_TYPE(obj), scheme_char_string_type) diff --git a/src/mzscheme/src/bool.c b/src/mzscheme/src/bool.c index a7e5a42528..43dff1e933 100644 --- a/src/mzscheme/src/bool.c +++ b/src/mzscheme/src/bool.c @@ -204,7 +204,7 @@ int scheme_eqv (Scheme_Object *obj1, Scheme_Object *obj2) return scheme_bignum_eq(obj1, obj2); else if (t1 == scheme_rational_type) 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 *c2 = (Scheme_Complex *)obj2; return scheme_eqv(c1->r, c2->r) && scheme_eqv(c1->i, c2->i); diff --git a/src/mzscheme/src/complex.c b/src/mzscheme/src/complex.c index fc235c788e..217c5e3258 100644 --- a/src/mzscheme/src/complex.c +++ b/src/mzscheme/src/complex.c @@ -87,17 +87,7 @@ Scheme_Object *scheme_complex_normalize(const Scheme_Object *o) if (c->i == zero) return c->r; if (c->r == zero) { - /* No coercions, but check izi type */ - 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 + /* No coercions */ 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)); c->r = r; } - if (SCHEME_DBL_VAL(c->i) == 0.0) - c->so.type = scheme_complex_izi_type; } else if (SCHEME_DBLP(c->r)) { Scheme_Object *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_DBLP(c->r)) { 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 { 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 @@ -355,6 +336,15 @@ Scheme_Object *scheme_complex_sqrt(const Scheme_Object *o) r = c->r; 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), scheme_bin_mult(i, i)); diff --git a/src/mzscheme/src/cstartup.inc b/src/mzscheme/src/cstartup.inc index 70e4e8a1e0..ddccfe70cb 100644 --- a/src/mzscheme/src/cstartup.inc +++ b/src/mzscheme/src/cstartup.inc @@ -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, -9,0,14,0,18,0,23,0,28,0,32,0,39,0,52,0,55,0,62,0,69, + 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,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, 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, 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, -99,111,110,100,63,97,110,100,66,108,101,116,114,101,99,72,112,97,114,97,109, -101,116,101,114,105,122,101,62,111,114,66,100,101,102,105,110,101,66,117,110,108, -101,115,115,68,104,101,114,101,45,115,116,120,65,113,117,111,116,101,29,94,2, +103,105,110,29,11,11,63,108,101,116,64,99,111,110,100,66,117,110,108,101,115, +115,66,100,101,102,105,110,101,64,119,104,101,110,64,108,101,116,42,63,97,110, +100,72,112,97,114,97,109,101,116,101,114,105,122,101,66,108,101,116,114,101,99, +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, 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, 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, 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, -7,2,2,2,9,2,2,2,8,2,2,2,11,2,2,2,12,2,2,97,35, +2,3,2,2,2,5,2,2,2,6,2,2,2,7,2,2,2,8,2,2,2, +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, 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, -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, -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, -27,248,22,65,248,22,178,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, -80,158,37,34,251,22,73,2,17,248,22,64,23,200,2,249,22,63,2,7,248, +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,173,3, +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, 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, -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, -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, -16,4,11,11,2,19,3,1,7,101,110,118,55,50,49,53,248,22,178,3,193, -27,248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27, -248,22,65,248,22,178,3,23,197,1,249,22,171,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, -35,41,9,222,33,39,248,22,178,3,248,22,88,23,200,2,250,22,73,2,22, +16,4,11,11,2,19,3,1,7,101,110,118,55,50,49,53,248,22,180,3,193, +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,180,3,23,197,1,249,22,173,3,80,158,37,34,28,248,22, +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,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, 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, -8,44,35,45,9,222,33,40,248,22,178,3,248,22,64,201,248,22,65,198,27, -248,22,178,3,194,249,22,63,248,22,73,248,22,64,196,248,22,65,195,27,248, -22,65,248,22,178,3,23,197,1,249,22,171,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,64,201,248,22,65,198,27,248,22,65,248,22,178,3,196,27,248,22,178,3, -248,22,64,195,249,22,171,3,80,158,38,34,28,248,22,71,195,250,22,74,2, -20,9,248,22,65,199,250,22,73,2,4,248,22,73,248,22,64,199,250,22,74, -2,3,248,22,65,201,248,22,65,202,27,248,22,65,248,22,178,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, -22,171,3,80,158,38,34,251,22,73,1,22,119,105,116,104,45,99,111,110,116, +8,44,35,45,9,222,33,40,248,22,180,3,248,22,64,201,248,22,65,198,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,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,180,3,248, +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,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,3,248,22,73,248,22,64,199,250,22,74, +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,180,3,248,22,180,3,248,22,64,199,249, +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, 120,116,101,110,100,45,112,97,114,97,109,101,116,101,114,105,122,97,116,105,111, 110,21,95,1,27,99,111,110,116,105,110,117,97,116,105,111,110,45,109,97,114, 107,45,115,101,116,45,102,105,114,115,116,11,2,24,201,250,22,74,2,20,9, -248,22,65,203,27,248,22,65,248,22,178,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, -22,64,23,198,2,28,249,22,138,8,62,61,62,248,22,172,3,248,22,88,23, +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,173,3,80,158,37,34,27,248,22,180,3,248, +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, -250,22,74,2,6,249,22,73,2,25,249,22,73,248,22,97,203,2,25,248,22, -65,202,251,22,73,2,17,28,249,22,138,8,248,22,172,3,248,22,64,23,201, +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,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, -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, 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, -37,34,28,248,22,51,248,22,172,3,248,22,64,197,250,22,73,2,26,248,22, -73,248,22,64,199,248,22,88,198,27,248,22,172,3,248,22,64,197,250,22,73, +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,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,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, -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, -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, 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, 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, -16,0,16,1,33,32,10,16,5,93,2,12,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, -5,93,2,5,89,162,8,44,35,51,9,223,0,33,34,34,20,103,159,34,16, -1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,7,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, -13,16,1,33,36,11,16,5,93,2,10,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, -16,5,93,2,4,89,162,8,44,35,56,9,223,0,33,41,34,20,103,159,34, -16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93,2,8,89,162,8, -44,35,51,9,223,0,33,43,34,20,103,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, -34,20,103,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, -25,159,35,2,2,2,13,16,0,11,16,5,93,2,6,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, -1,33,48,11,16,5,93,2,11,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, +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,5,89,162,8,44,35,51,9,223,0, +33,33,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,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,9,89,162,8,44, +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,12,89,162,8,44,35,54,9,223,0,33, +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,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,11,89,162,8, +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,8,89,162,8,44,35,52,9,223,0,33,44, +34,20,102,159,34,16,1,20,25,159,35,2,2,2,13,16,0,11,16,5,93, +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,4,89,162,8,44,35,56, +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,6,89,162,8,44,35,52,9,223,0,33,49,34, +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}; 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, 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, @@ -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, 111,32,97,32,114,111,111,116,32,112,97,116,104,58,32,5,0,68,35,37,107, 101,114,110,101,108,27,20,14,159,80,158,35,49,250,80,158,38,50,249,22,27, -11,80,158,40,49,22,138,12,10,248,22,186,4,23,196,2,28,248,22,164,5, -23,194,2,12,87,94,248,22,141,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, -195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,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, -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,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, -248,22,182,12,23,195,2,249,22,184,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, -28,23,193,2,249,22,63,248,22,186,12,249,22,184,12,23,198,1,247,22,135, +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,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,185,12,23, +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,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,188,12,249,22,186,12, +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,185,12,23,195,2,23,194,1,28, +248,22,184,12,23,195,2,249,22,186,12,23,196,1,250,80,158,46,47,248,22, +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,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, 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, -23,195,2,23,194,1,28,248,22,182,12,23,195,2,249,22,184,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, -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,13,248,80,159,42,52,35,248,22,65,23,199,1,248, +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,184,12,23,195,2,249,22,186,12,23,196,1, +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,188,12,249,22,186, +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, -159,12,23,195,2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,6,23, -195,2,27,248,22,181,12,195,28,192,192,248,22,182,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, -87,94,23,193,1,28,248,22,133,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,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, +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,183,12,195,28,192,192,248,22,184,12,195,11,87,94,28,28, +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,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,184,12,23,197,2,11,12,250,22, +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, 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, -23,197,2,2,21,249,22,138,8,247,22,152,7,2,21,27,28,248,22,133,6, -23,196,2,23,195,2,248,22,142,7,248,22,164,12,23,197,2,28,249,22,147, +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,140,8,247,22,154,7,2,21,27,28,248,22,135,6, +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, -92,93,34,23,195,2,28,248,22,133,6,195,248,22,167,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, -120,34,47,34,28,249,22,147,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, +92,93,34,23,195,2,28,248,22,135,6,195,248,22,169,12,195,194,27,248,22, +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,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,155, 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, -248,22,167,12,194,193,87,94,28,27,248,22,159,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,28,23,193,2,192,87,94,23,193,1,248,22,182,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,183,10,249,22,128,10,248,22,162,6,250,22,181,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, -87,94,23,193,1,28,248,22,133,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,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, -183,10,249,22,128,10,248,22,162,6,250,22,181,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, -192,87,94,23,193,1,28,248,22,133,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,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, -10,249,22,128,10,248,22,162,6,250,22,181,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, -158,10,23,196,1,247,22,23,87,94,87,94,249,80,159,36,37,35,2,7,195, +34,23,202,1,6,2,2,92,49,80,158,42,35,2,21,28,248,22,135,6,194, +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,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,184,12,23,197,2,11,12,250, +22,170,8,23,196,2,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248, +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,161,12,23,196,2,28,23,193,2,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,184,12,23,197,2,11,12,250,22, +170,8,23,196,2,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248,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,87,94,28,27,248,22,161,12,23,196,2,28,23,193,2, +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,184,12,23,197,2,11,12,250, +22,170,8,195,2,22,23,197,2,28,248,22,183,12,23,195,2,12,248,22,185, +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,185,10,249,22, +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, 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, -22,181,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, -12,248,22,64,23,202,2,23,199,2,28,248,22,172,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, +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,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,174,12,23,194,2,27,250,22, +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, -1,248,23,199,1,251,22,181,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, -201,1,27,249,22,177,12,248,22,64,23,197,2,23,202,2,28,248,22,172,12, -23,194,2,27,250,22,1,22,177,12,23,197,1,204,28,248,22,172,12,193,192, +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,179,12,23,207,1,23,208,1,23, +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,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, 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, -248,22,71,23,205,2,87,94,23,204,1,23,203,1,250,22,1,22,177,12,23, -206,1,23,207,1,23,200,1,27,249,22,177,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, -248,22,172,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, -202,198,87,95,28,28,248,22,160,12,23,194,2,10,27,248,22,159,12,23,195, -2,28,23,193,2,192,87,94,23,193,1,28,248,22,133,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, -196,2,11,12,252,22,168,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, -12,252,22,168,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, -12,250,22,169,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, -159,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,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, -201,2,28,28,248,22,133,6,23,197,2,10,248,22,185,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, -34,11,248,22,180,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, -249,22,169,12,250,22,152,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, -2,249,22,145,7,23,204,1,8,63,23,202,1,28,248,22,160,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, -194,249,22,177,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, -87,94,23,193,1,28,248,22,133,6,23,197,2,27,248,22,181,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,11,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,22,168,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, -94,23,195,1,87,94,28,23,193,2,12,250,22,169,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, -153,13,0,9,35,114,120,35,34,91,46,93,34,248,22,165,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, -201,1,28,248,22,160,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,194,249,22,177,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, -23,195,2,27,248,22,150,7,6,11,11,80,76,84,67,79,76,76,69,67,84, -83,28,192,192,6,0,0,6,0,0,27,28,23,196,1,250,22,177,12,248,22, -134,13,69,97,100,100,111,110,45,100,105,114,247,22,148,7,6,8,8,99,111, +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,179,12,23, +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,174,12,23,194,2,27,250,22,1,22,179,12,23,197,1,203,28, +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,138,13,253,2,40,198,199,200,201, +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,135,6,23,195,2,27,248, +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,170,8,23,200,2,2,25,34,23,198,2,23,199,2,28, +28,248,22,135,6,23,195,2,10,248,22,187,6,23,195,2,87,94,23,194,1, +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,182,12,23,197,2,87,94,23,195,1,87,94,28,192, +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,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,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,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,135,6,23,197,2,10,248,22,187,6,23,197,2,12,252, +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,182,12,23,199,2,87,94,23,195,1,87,94,28,23,193,2,12, +250,22,171,8,2,10,2,27,23,201,2,249,22,7,23,195,1,23,196,1,27, +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,167,12,23,201,1,28,248,22,135,6,23,203, +2,249,22,147,7,23,204,1,8,63,23,202,1,28,248,22,162,12,23,199,2, +248,22,163,12,23,199,1,87,94,23,198,1,247,22,164,12,28,248,22,161,12, +194,249,22,179,12,195,194,192,91,159,36,11,90,161,36,34,11,87,95,28,28, +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,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,184,12,23,198,2,11,12,252,22, +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,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,182,12,23,199,2,87, +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,171,12,249,22,133,7,250,22, +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,135,6,23,202,2,249,22,147,7,23,203,1,8,63,23, +201,1,28,248,22,162,12,23,199,2,248,22,163,12,23,199,1,87,94,23,198, +1,247,22,164,12,28,248,22,161,12,194,249,22,179,12,195,194,192,249,247,22, +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,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,179,12,248,22, +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, -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, -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, -22,97,23,199,1,28,249,22,191,6,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, -193,1,28,249,22,191,6,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, -10,248,22,133,6,194,12,250,22,168,8,2,14,6,21,21,98,121,116,101,32, +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,170,12,23,197,1,194,87,95,23,195,1,23, +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,170,12,23,199,1,9,87,95,28,28,248,22,187,6,194, +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, -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, -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, -33,54,28,23,193,2,91,159,37,11,90,161,37,34,11,248,22,180,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,28,249,22,140,8,23,195,2,23,202,2,11,28,248,22,181,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, +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,187,12,23,201, +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,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, -27,28,248,22,159,12,23,196,2,27,249,22,177,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, -94,23,193,1,28,23,199,2,11,27,248,22,185,12,23,202,2,28,249,22,140, -8,23,195,2,23,203,1,11,28,248,22,181,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, -28,248,22,71,23,197,2,11,27,248,22,184,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, +27,28,248,22,161,12,23,196,2,27,249,22,179,12,23,198,2,23,201,2,28, +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,187,12,23,202,2,28,249,22,142, +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,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,186,12,248,22,64,23,199,2,27,249, +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, -11,27,248,22,184,12,248,22,64,23,196,2,27,249,22,177,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, -27,248,22,65,23,197,1,28,248,22,71,23,194,2,11,27,248,22,184,12,248, -22,64,195,27,249,22,177,12,23,196,1,202,28,248,22,171,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, -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,28,23,193,2,192,87,94,23,193,1,248,22,182, -12,23,197,2,11,12,250,22,168,8,2,15,6,25,25,112,97,116,104,32,111, +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,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,186,12,248, +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,161,12, +23,196,2,28,23,193,2,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,184, +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, -2,28,28,23,195,2,28,27,248,22,159,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, -23,193,2,192,87,94,23,193,1,248,22,182,12,23,198,2,11,248,22,181,12, -23,196,2,11,10,12,250,22,168,8,2,15,6,29,29,35,102,32,111,114,32, +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,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,184,12,23,198,2,11,248,22,183,12, +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, -110,103,23,198,2,28,28,248,22,181,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, -118,101,11,27,248,22,150,7,6,4,4,80,65,84,72,251,2,52,23,199,1, +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,182,12,23,198,2,249,22,140,8,194,68,114,101,108,97,116,105, +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, -249,22,138,8,247,22,152,7,2,21,249,22,63,248,22,168,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, +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,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, -94,249,22,189,5,247,22,166,4,195,248,22,140,5,249,22,151,3,34,249,22, -135,3,197,198,27,248,22,134,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, -1,28,192,192,34,27,249,22,183,4,23,198,1,83,158,38,20,97,95,89,162, -8,44,34,46,9,224,4,3,33,59,23,196,1,23,197,1,27,248,22,170,4, -23,195,1,87,94,248,22,134,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, -40,20,100,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, +94,249,22,191,5,247,22,168,4,195,248,22,142,5,249,22,153,3,34,249,22, +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,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,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,172,4, +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,102,159,34,16,1,20,24,65,98,101,103,105,110,16,0,83,158, +40,20,99,137,67,35,37,117,116,105,108,115,2,1,11,10,10,41,80,158,34, +34,20,102,159,37,16,17,30,2,1,2,2,193,30,2,1,2,3,193,30,2, 1,2,4,193,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, 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, 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, -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,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, @@ -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, 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, -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, -159,34,45,35,83,158,34,16,2,27,248,22,141,13,248,22,144,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, +159,34,45,35,83,158,34,16,2,27,248,22,143,13,248,22,146,7,27,28,249, +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, 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, 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, @@ -342,16 +342,16 @@ 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, 111,116,101,29,94,2,1,67,35,37,117,116,105,108,115,11,29,94,2,1,69, 35,37,110,101,116,119,111,114,107,11,29,94,2,1,68,35,37,112,97,114,97, 109,122,11,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, 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, -83,158,40,20,100,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, +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,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,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,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, @@ -359,7 +359,7 @@ 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, 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, @@ -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, 117,108,101,45,110,97,109,101,45,114,101,115,111,108,118,101,114,63,108,105,98, 67,105,103,110,111,114,101,100,249,22,14,195,80,158,36,44,249,80,159,36,47, -35,195,10,27,28,23,195,2,28,249,22,138,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, -23,194,2,91,159,37,11,90,161,37,34,11,248,22,180,12,23,197,1,87,95, +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,151,4,23,197,2,28,248,22,161,12, +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, -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, -22,185,5,28,248,22,159,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, -1,5,3,46,122,111,252,22,177,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, -94,23,194,1,27,23,194,1,27,250,22,130,13,196,11,32,0,89,162,8,44, +22,187,5,28,248,22,161,12,23,198,2,23,197,1,87,94,23,197,1,247,22, +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,179,12,23,199,1,23,201,1,6,6,6,110,97, +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,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, -27,250,22,130,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, -196,1,27,250,22,130,13,196,11,32,0,89,162,8,44,34,39,9,222,11,28, -192,249,22,63,195,194,11,249,247,22,183,5,248,22,64,195,195,249,247,22,183, -5,194,195,87,94,28,248,80,158,35,36,23,195,2,12,250,22,168,8,77,108, +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,142,13,248,22,64,195,195,27,248,23,195,1,23, +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,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,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, 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, -2,23,200,1,27,247,22,185,5,28,23,193,2,249,22,184,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, -161,35,38,11,28,249,22,138,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, -162,42,35,48,62,122,111,225,7,5,3,33,27,27,83,158,38,20,97,94,89, +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,187,5,28,23,193,2,249,22,186,12,23,203,1,23, +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,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,139,13,27,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, 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, -2,27,28,23,196,2,11,193,28,192,192,28,193,28,23,196,2,28,249,22,147, +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,149, 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, -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, -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, 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, -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, -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, -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, 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, @@ -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,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, -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, 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, -27,247,22,120,87,94,250,22,125,80,158,41,41,248,22,163,13,247,22,147,11, +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,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, -192,250,22,167,8,11,196,195,248,22,165,8,194,28,249,22,139,6,194,6,1, -1,46,2,17,28,249,22,139,6,194,6,2,2,46,46,62,117,112,192,28,249, -22,140,8,248,22,65,23,200,2,23,197,1,28,249,22,138,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, +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,141,6,194,6,2,2,46,46,62,117,112,192,28,249, +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,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, 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, -80,158,38,38,250,80,158,41,39,249,22,27,11,80,158,43,38,22,131,4,23, -196,1,249,247,22,184,5,23,198,1,248,22,52,248,22,163,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, -198,2,250,22,167,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, +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,133,4,23, +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,161,12,23,197,2,10,248,22,154,4,23,197,2,12,28,23, +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,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, -61,23,197,2,249,22,138,8,248,22,64,23,199,2,2,4,11,248,22,148,4, -248,22,88,197,28,28,248,22,61,23,197,2,249,22,138,8,248,22,64,23,199, +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,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, -250,80,158,39,39,249,22,27,11,80,158,41,38,22,147,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, +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,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, 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, 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, -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, 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, -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, 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, -250,22,1,22,177,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, -199,2,87,94,23,194,1,28,248,22,182,12,23,199,2,23,198,2,248,22,73, +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,161,12,23, +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, -98,115,111,108,117,116,101,41,28,249,22,138,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, +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,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, 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, 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, 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, -197,1,6,7,7,109,97,105,110,46,115,115,28,249,22,147,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, -3,46,115,115,28,249,22,138,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, -28,28,248,22,159,12,23,194,2,10,248,22,155,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, +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,158,6,23,199,1,6,3, +3,46,115,115,28,249,22,140,8,248,22,64,23,201,2,64,102,105,108,101,249, +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,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,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, 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, -27,28,248,22,155,7,23,195,2,249,22,160,7,23,196,2,34,249,22,186,12, -248,22,187,12,23,197,2,11,27,28,248,22,155,7,23,196,2,249,22,160,7, +27,28,248,22,157,7,23,195,2,249,22,162,7,23,196,2,34,249,22,188,12, +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, -28,248,22,155,7,23,199,2,250,22,7,2,22,249,22,160,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, -155,7,23,200,2,249,22,160,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, -148,4,23,200,2,27,27,250,22,126,80,158,50,41,248,22,163,13,247,22,147, +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,182,12,23,198,2,87,95,23,195,1,23,193,1,27,28,248,22, +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,157,7,23,201,2,249,22,162,7,23,202,2,38,248,22, +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, -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, 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, 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, -1,197,10,12,28,28,248,22,155,7,23,202,1,11,27,248,22,133,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,21,11,250,22,125,80,158,49,42,28,248,22,133,6,23,210,2,249,22,63, +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,140,8,248,22,64,23,210,2, +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, -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, -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, -87,95,248,22,130,4,248,80,158,36,48,247,22,147,11,248,22,184,5,80,158, -35,35,248,22,133,12,80,159,35,40,35,159,34,20,103,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, -2,1,11,10,10,36,80,158,34,34,20,103,159,38,16,19,30,2,1,2,2, +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,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,99,137,66,35,37,98,111,111,116, +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, 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, @@ -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,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, -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, 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, diff --git a/src/mzscheme/src/hash.c b/src/mzscheme/src/hash.c index ef3a3ba30e..cfde47306f 100644 --- a/src/mzscheme/src/hash.c +++ b/src/mzscheme/src/hash.c @@ -28,15 +28,17 @@ #include #include #include +#include "../gc2/gc2_obj.h" int scheme_hash_request_count; int scheme_hash_iteration_count; #ifdef MZ_PRECISE_GC -static short keygen; +static long keygen; XFORM_NONGCING static MZ_INLINE long PTR_TO_LONG(Scheme_Object *o) { + long bits; short v; if (SCHEME_INTP(o)) @@ -47,12 +49,30 @@ long PTR_TO_LONG(Scheme_Object *o) if (!(v & 0xFFFC)) { if (!keygen) 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; 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 # 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; } else _h2 = &h2; - if ((long)table->make_hash_indices < 0x100) - *(long *)0x0 = 1; /* REMOVEME */ table->make_hash_indices((void *)key, (long *)&h, (long *)_h2); h = h & mask; if (_h2) { @@ -991,7 +1009,6 @@ static long equal_hash_key(Scheme_Object *o, long k, Hash_Info *hi) break; } case scheme_complex_type: - case scheme_complex_izi_type: { Scheme_Complex *c = (Scheme_Complex *)o; 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: return equal_hash_key2(scheme_rational_numerator(o), hi); case scheme_complex_type: - case scheme_complex_izi_type: { long v1, v2; Scheme_Complex *c = (Scheme_Complex *)o; diff --git a/src/mzscheme/src/jit.c b/src/mzscheme/src/jit.c index caecb22e57..c83e92c365 100644 --- a/src/mzscheme/src/jit.c +++ b/src/mzscheme/src/jit.c @@ -190,6 +190,12 @@ static void register_traversers(void); static void release_native_code(void *fnlized, void *p); #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_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); return 1; } 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; } else if (IS_NAMED_PRIM(rator, "exact-integer?")) { generate_inlined_type_test(jitter, app, scheme_integer_type, scheme_bignum_type, for_branch, branch_short); 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?")) { generate_inlined_type_test(jitter, app, scheme_prim_type, scheme_native_closure_type, for_branch, branch_short); return 1; diff --git a/src/mzscheme/src/numarith.c b/src/mzscheme/src/numarith.c index 9b894db045..4db6e2769a 100644 --- a/src/mzscheme/src/numarith.c +++ b/src/mzscheme/src/numarith.c @@ -120,7 +120,7 @@ scheme_add1 (int argc, Scheme_Object *argv[]) return scheme_bignum_add1(o); if (t == scheme_rational_type) 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); NEED_NUMBER(add1); @@ -155,7 +155,7 @@ scheme_sub1 (int argc, Scheme_Object *argv[]) return scheme_bignum_sub1(o); if (t == scheme_rational_type) 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); NEED_NUMBER(sub1); @@ -374,10 +374,6 @@ scheme_abs(int argc, Scheme_Object *argv[]) else 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); @@ -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); } - 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)) scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, "%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)) 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)) scheme_raise_exn(MZEXN_FAIL_CONTRACT_DIVIDE_BY_ZERO, "%s: undefined for 0", name); diff --git a/src/mzscheme/src/number.c b/src/mzscheme/src/number.c index e8f304dfc0..f8b81b7367 100644 --- a/src/mzscheme/src/number.c +++ b/src/mzscheme/src/number.c @@ -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_nonnegative_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 *even_p (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_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_make_folding_prim(exact_p, "exact?", @@ -630,8 +640,6 @@ double scheme_real_to_double(Scheme_Object *r) return scheme_bignum_to_double(r); else if (SCHEME_RATIONALP(r)) return scheme_rational_to_double(r); - else if (SCHEME_COMPLEX_IZIP(r)) - return scheme_real_to_double(IZI_REAL_PART(r)); else return 0.0; } @@ -646,6 +654,20 @@ int scheme_minus_zero_p(double 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 int scheme_both_nan(double a, double b) { @@ -736,7 +758,11 @@ static Scheme_Object * rational_p(int argc, Scheme_Object *argv[]) { 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) @@ -751,13 +777,13 @@ int scheme_is_integer(const Scheme_Object *o) if (MZ_IS_NAN(d)) return 0; # endif + if (MZ_IS_POS_INFINITY(d) + || MZ_IS_NEG_INFINITY(d)) + return 0; if (floor(d) == d) return 1; } - if (SCHEME_COMPLEX_IZIP(o)) - return scheme_is_integer(IZI_REAL_PART(o)); - return 0; } @@ -804,6 +830,26 @@ exact_positive_integer_p (int argc, Scheme_Object *argv[]) 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) { if (SCHEME_INTP(n)) { @@ -821,8 +867,6 @@ int scheme_is_exact(const Scheme_Object *n) else if (type == scheme_float_type) return 0; #endif - else if (type == scheme_complex_izi_type) - return 0; else { return -1; } @@ -858,8 +902,6 @@ int scheme_is_inexact(const Scheme_Object *n) else if (type == scheme_float_type) return 1; #endif - else if (type == scheme_complex_izi_type) - return 1; else { return -1; } @@ -888,10 +930,6 @@ scheme_odd_p (int argc, Scheme_Object *argv[]) return (SCHEME_INT_VAL(v) & 0x1) ? scheme_true : scheme_false; if (SCHEME_BIGNUMP(v)) 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)) { 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; if (SCHEME_BIGNUMP(v)) 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)) { 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_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)) { long i1, i2, a, b, r; @@ -1061,19 +1092,21 @@ floor_prim (int argc, Scheme_Object *argv[]) return o; t = _SCHEME_TYPE(o); #ifdef MZ_USE_SINGLE_FLOATS - if (t == scheme_float_type) - return scheme_make_float(floor(SCHEME_FLT_VAL(o))); + if (t == scheme_float_type) { + float d = SCHEME_FLT_VAL(o); + if (rational_flt_p((double)d)) + return scheme_make_float(floor(d)); + } #endif - if (t == scheme_double_type) - return scheme_make_double(floor(SCHEME_DBL_VAL(o))); + if (t == scheme_double_type) { + double d = SCHEME_DBL_VAL(o); + if (rational_dbl_p(d)) + return scheme_make_double(floor(d)); + } if (t == scheme_bignum_type) return o; if (t == scheme_rational_type) 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); @@ -1090,19 +1123,21 @@ ceiling (int argc, Scheme_Object *argv[]) return o; t = _SCHEME_TYPE(o); #ifdef MZ_USE_SINGLE_FLOATS - if (t == scheme_float_type) - return scheme_make_float(ceil(SCHEME_FLT_VAL(o))); + if (t == scheme_float_type) { + float d = SCHEME_FLT_VAL(o); + if (rational_flt_p(d)) + return scheme_make_float(ceil(d)); + } #endif - if (t == scheme_double_type) - return scheme_make_double(ceil(SCHEME_DBL_VAL(o))); + if (t == scheme_double_type) { + double d = SCHEME_DBL_VAL(o); + if (rational_dbl_p(d)) + return scheme_make_double(ceil(d)); + } if (t == scheme_bignum_type) return o; if (t == scheme_rational_type) 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); @@ -1121,29 +1156,29 @@ sch_truncate (int argc, Scheme_Object *argv[]) #ifdef MZ_USE_SINGLE_FLOATS if (t == scheme_float_type) { float v = SCHEME_FLT_VAL(o); - if (v > 0) - v = floor(v); - else - v = ceil(v); - return scheme_make_float(v); + if (rational_flt_p(v)) { + if (v > 0) + v = floor(v); + else + v = ceil(v); + return scheme_make_float(v); + } } #endif if (t == scheme_double_type) { double v = SCHEME_DBL_VAL(o); - if (v > 0) - v = floor(v); - else - v = ceil(v); - return scheme_make_double(v); + if (rational_dbl_p(v)) { + if (v > 0) + v = floor(v); + else + v = ceil(v); + return scheme_make_double(v); + } } if (t == scheme_bignum_type) return o; if (t == scheme_rational_type) 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); @@ -1165,26 +1200,28 @@ sch_round (int argc, Scheme_Object *argv[]) double i, frac; int invert; - if (d < 0) { - d = -d; - invert = 1; - } else - invert = 0; + if (rational_flt_p(d)) { + if (d < 0) { + d = -d; + invert = 1; + } else + invert = 0; - frac = modf(d, &i); - if (frac < 0.5) - d = i; - else if (frac > 0.5) - d = i + 1; - else if (fmod(i, 2.0) != 0.0) + frac = modf(d, &i); + if (frac < 0.5) + d = i; + else if (frac > 0.5) + d = i + 1; + else if (fmod(i, 2.0) != 0.0) d = i + 1; - else - d = i; + else + d = i; - if (invert) - d = -d; + if (invert) + d = -d; - return scheme_make_float((float)d); + return scheme_make_float((float)d); + } } #endif if (t == scheme_double_type) { @@ -1192,35 +1229,33 @@ sch_round (int argc, Scheme_Object *argv[]) double i, frac; int invert; - if (d < 0) { - d = -d; - invert = 1; - } else - invert = 0; + if (rational_dbl_p(d)) { + if (d < 0) { + d = -d; + invert = 1; + } else + invert = 0; - frac = modf(d, &i); - if (frac < 0.5) - d = i; - else if (frac > 0.5) - d = i + 1; - else if (fmod(i, 2.0) != 0.0) + frac = modf(d, &i); + if (frac < 0.5) + d = i; + else if (frac > 0.5) + d = i + 1; + else if (fmod(i, 2.0) != 0.0) d = i + 1; - else - d = i; + else + d = i; - if (invert) - d = -d; + if (invert) + d = -d; - return scheme_make_double(d); + return scheme_make_double(d); + } } if (t == scheme_bignum_type) return o; if (t == scheme_rational_type) 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); @@ -1246,8 +1281,6 @@ float TO_FLOAT_VAL(const Scheme_Object *n) return scheme_bignum_to_float(n); if (t == scheme_rational_type) return scheme_rational_to_float(n); - if (t == scheme_complex_izi_type) - return TO_FLOAT_VAL(IZI_REAL_PART(n)); return 0.0f; } @@ -1279,8 +1312,6 @@ double TO_DOUBLE_VAL(const Scheme_Object *n) return scheme_bignum_to_double(n); if (t == scheme_rational_type) return scheme_rational_to_double(n); - if (t == scheme_complex_izi_type) - return TO_DOUBLE_VAL(IZI_REAL_PART(n)); 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) { - if (SCHEME_COMPLEX_IZIP(n)) - n = IZI_REAL_PART(n); - return scheme_exact_to_inexact(1, (Scheme_Object **)&n); } @@ -1319,35 +1347,23 @@ Scheme_Object *scheme_to_bignum(const 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, int argc, Scheme_Object *argv[]) { Scheme_Object *n = argv[0], *orig; - if (SCHEME_COMPLEX_IZIP(n)) n = IZI_REAL_PART(n); - orig = n; if (SCHEME_FLOATP(n)) { double d = SCHEME_FLOAT_VAL(n); - if (MZ_IS_NAN(d)) - return n; - else if (MZ_IS_POS_INFINITY(d) - || MZ_IS_NEG_INFINITY(d)) { - if (low_p) { -#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; + if (MZ_IS_NAN(d) + || MZ_IS_POS_INFINITY(d) + || MZ_IS_NEG_INFINITY(d)) { + scheme_wrong_type(name, REAL_NUMBER_STR, 0, argc, argv); + ESCAPED_BEFORE_HERE; } - + #ifdef MZ_USE_SINGLE_FLOATS if (SCHEME_FLTP(n)) n = scheme_rational_from_float((float)d); @@ -1579,8 +1595,20 @@ double SCH_LOG(double d) { if (d == 0.0) return scheme_minus_infinity_val; else #endif #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(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(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) @@ -1604,8 +1632,6 @@ atan_prim (int argc, Scheme_Object *argv[]) n1 = argv[0]; - if (SCHEME_COMPLEX_IZIP(n1)) n1 = IZI_REAL_PART(n1); - if (SCHEME_INTP(n1)) v = SCHEME_INT_VAL(n1); #ifdef MZ_USE_SINGLE_FLOATS @@ -1648,8 +1674,6 @@ atan_prim (int argc, Scheme_Object *argv[]) ESCAPED_BEFORE_HERE; } - if (SCHEME_COMPLEX_IZIP(n2)) n2 = IZI_REAL_PART(n2); - if (SCHEME_INTP(n2)) v2 = SCHEME_INT_VAL(n2); #ifdef MZ_USE_SINGLE_FLOATS @@ -1738,16 +1762,6 @@ Scheme_Object *scheme_sqrt (int argc, Scheme_Object *argv[]) 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)) return scheme_complex_sqrt(n); @@ -1790,24 +1804,9 @@ Scheme_Object *do_int_sqrt (const char *name, int argc, Scheme_Object *argv[], i return NULL; } - /* Special case for x+0.0i: */ - 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)) { + if (SCHEME_INTP(v) || SCHEME_BIGNUMP(v)) { int imaginary = 0; - + if (scheme_is_negative(v)) { v = scheme_bin_minus(zeroi, v); imaginary = 1; @@ -2111,9 +2110,6 @@ static Scheme_Object *make_rectangular (int argc, Scheme_Object *argv[]) if (!SCHEME_REALP(b)) 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); bf = SCHEME_FLOATP(b); @@ -2143,9 +2139,6 @@ Scheme_Object *scheme_make_polar (int argc, Scheme_Object *argv[]) if (b == zeroi) return a; - if (SCHEME_COMPLEX_IZIP(a)) a = IZI_REAL_PART(a); - if (SCHEME_COMPLEX_IZIP(b)) b = IZI_REAL_PART(b); - v = b; 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)); #endif } - if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) { + if (t == scheme_complex_type) { Scheme_Object *realpart, *imaginarypart; realpart = _scheme_complex_real_part(o); @@ -2387,7 +2380,7 @@ scheme_inexact_to_exact (int argc, Scheme_Object *argv[]) return o; if (t == scheme_rational_type) return o; - if ((t == scheme_complex_type) || (t == scheme_complex_izi_type)) { + if (t == scheme_complex_type) { Scheme_Object *realpart, *imaginarypart; realpart = _scheme_complex_real_part(o); diff --git a/src/mzscheme/src/numcomp.c b/src/mzscheme/src/numcomp.c index 083ad684ff..2f9707643a 100644 --- a/src/mzscheme/src/numcomp.c +++ b/src/mzscheme/src/numcomp.c @@ -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_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_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; - top: - if (SCHEME_INTP(o)) return o == zeroi; t = _SCHEME_TYPE(o); @@ -164,12 +162,12 @@ scheme_is_zero(const Scheme_Object *o) #endif return SCHEME_DBL_VAL(o) == 0.0; } - - if (t == scheme_complex_izi_type) { - o = IZI_REAL_PART(o); - goto top; + if (t == scheme_complex_type) { + if (scheme_is_zero(scheme_complex_imaginary_part(o))) + return scheme_is_zero(scheme_complex_real_part(o)); + return 0; } - + if ((t >= scheme_bignum_type) && (t <= scheme_complex_type)) return 0; @@ -193,8 +191,6 @@ scheme_is_positive(const Scheme_Object *o) { Scheme_Type t; - top: - if (SCHEME_INTP(o)) return SCHEME_INT_VAL(o) > 0; t = _SCHEME_TYPE(o); @@ -220,10 +216,6 @@ scheme_is_positive(const Scheme_Object *o) return SCHEME_BIGPOS(o); if (t == scheme_rational_type) return scheme_is_rational_positive(o); - if (t == scheme_complex_izi_type) { - o = IZI_REAL_PART(o); - goto top; - } return -1; } @@ -245,8 +237,6 @@ scheme_is_negative(const Scheme_Object *o) { Scheme_Type t; - top: - if (SCHEME_INTP(o)) return SCHEME_INT_VAL(o) < 0; t = _SCHEME_TYPE(o); @@ -272,10 +262,6 @@ scheme_is_negative(const Scheme_Object *o) return !SCHEME_BIGPOS(o); if (t == scheme_rational_type) return !scheme_is_rational_positive(o); - if (t == scheme_complex_izi_type) { - o = IZI_REAL_PART(o); - goto top; - } return -1; } diff --git a/src/mzscheme/src/nummacs.h b/src/mzscheme/src/nummacs.h index f39da62ecb..52b34c61c7 100644 --- a/src/mzscheme/src/nummacs.h +++ b/src/mzscheme/src/nummacs.h @@ -309,7 +309,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \ return name ## __int_rat(n1, n2); \ } \ complexwrap( \ - if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ + if (noniziwrap((t2 == scheme_complex_type))) { \ 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); \ } \ complexwrap( \ - if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ + if (noniziwrap((t2 == scheme_complex_type))) { \ 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); \ } \ complexwrap( \ - if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ - return name ## __dbl_comp(d1, n1, n2); \ + if (noniziwrap((t2 == scheme_complex_type))) { \ + return name ## __dbl_comp(d1, n1, n2); \ } \ )\ return name ## __wrong_type(n2); \ @@ -406,7 +406,7 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \ if (t2 == scheme_rational_type) \ return name ## __big_rat(n1, n2); \ complexwrap( \ - if (noniziwrap((t2 == scheme_complex_type) ||) (t2 == scheme_complex_izi_type)) { \ + if (noniziwrap((t2 == scheme_complex_type))) { \ return name ## __big_comp(n1, n2); \ } \ )\ @@ -431,14 +431,14 @@ name (const Scheme_Object *n1, const Scheme_Object *n2) \ if (t2 == scheme_rational_type) \ return rop((n1), (n2)); \ 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 ## __wrong_type(n2); \ } \ complexwrap( \ - else if (noniziwrap((t1 == scheme_complex_type) ||) (t1 == scheme_complex_izi_type)) \ + else if (noniziwrap((t1 == scheme_complex_type))) \ { \ if (SCHEME_INTP(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); \ if (t2 == scheme_rational_type) \ 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 name ## __wrong_type(n2); \ } \ @@ -675,7 +675,7 @@ name (int argc, Scheme_Object *argv[]) \ BIGNUM_MODE(o) \ } else if (t == scheme_rational_type) { \ 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); \ else { \ scheme_wrong_type(#scheme_name, "number", 0, argc, argv); \ diff --git a/src/mzscheme/src/salloc.c b/src/mzscheme/src/salloc.c index e90db8143e..c037aed7d7 100644 --- a/src/mzscheme/src/salloc.c +++ b/src/mzscheme/src/salloc.c @@ -2167,7 +2167,6 @@ long scheme_count_memory(Scheme_Object *root, Scheme_Hash_Table *ht) e = COUNT(SCHEME_BOX_VAL(root)); break; case scheme_complex_type: - case scheme_complex_izi_type: s = sizeof(Scheme_Complex); e = COUNT(((Scheme_Complex *)root)->r) + COUNT(((Scheme_Complex *)root)->i); break; diff --git a/src/mzscheme/src/schemef.h b/src/mzscheme/src/schemef.h index 3bbb4138db..448d336be7 100644 --- a/src/mzscheme/src/schemef.h +++ b/src/mzscheme/src/schemef.h @@ -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_complex_normalize(const Scheme_Object *n); -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_real_part(const Scheme_Object *n); +XFORM_NONGCING MZ_EXTERN Scheme_Object *scheme_complex_imaginary_part(const Scheme_Object *n); /* Exact/inexact: */ XFORM_NONGCING MZ_EXTERN int scheme_is_exact(const Scheme_Object *n); diff --git a/src/mzscheme/src/schminc.h b/src/mzscheme/src/schminc.h index 440fd872f4..599df299a3 100644 --- a/src/mzscheme/src/schminc.h +++ b/src/mzscheme/src/schminc.h @@ -13,7 +13,7 @@ #define USE_COMPILED_STARTUP 1 -#define EXPECTED_PRIM_COUNT 895 +#define EXPECTED_PRIM_COUNT 897 #ifdef MZSCHEME_SOMETHING_OMITTED # undef USE_COMPILED_STARTUP diff --git a/src/mzscheme/src/schvers.h b/src/mzscheme/src/schvers.h index 3cc77a91eb..6d3dee93d5 100644 --- a/src/mzscheme/src/schvers.h +++ b/src/mzscheme/src/schvers.h @@ -13,12 +13,12 @@ consistently.) */ -#define MZSCHEME_VERSION "3.99.0.14" +#define MZSCHEME_VERSION "3.99.0.16" #define MZSCHEME_VERSION_X 3 #define MZSCHEME_VERSION_Y 99 #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_MINOR ((MZSCHEME_VERSION_Z * 1000) + MZSCHEME_VERSION_W) diff --git a/src/mzscheme/src/stypes.h b/src/mzscheme/src/stypes.h index c196f0e201..422ae2829d 100644 --- a/src/mzscheme/src/stypes.h +++ b/src/mzscheme/src/stypes.h @@ -57,187 +57,186 @@ enum { scheme_rational_type, /* 39 */ scheme_float_type, /* 40 */ scheme_double_type, /* 41 */ - scheme_complex_izi_type, /* 42 */ - scheme_complex_type, /* 43 */ - scheme_char_string_type, /* 44 */ - scheme_byte_string_type, /* 45 */ - scheme_unix_path_type, /* 46 */ - scheme_windows_path_type, /* 47 */ - scheme_symbol_type, /* 48 */ - scheme_keyword_type, /* 49 */ - scheme_null_type, /* 50 */ - scheme_pair_type, /* 51 */ - scheme_mutable_pair_type, /* 52 */ - scheme_vector_type, /* 53 */ - scheme_inspector_type, /* 54 */ - scheme_input_port_type, /* 55 */ - scheme_output_port_type, /* 56 */ - scheme_eof_type, /* 57 */ - scheme_true_type, /* 58 */ - scheme_false_type, /* 59 */ - scheme_void_type, /* 60 */ - scheme_syntax_compiler_type, /* 61 */ - scheme_macro_type, /* 62 */ - scheme_box_type, /* 63 */ - scheme_thread_type, /* 64 */ - scheme_stx_offset_type, /* 65 */ - scheme_cont_mark_set_type, /* 66 */ - scheme_sema_type, /* 67 */ - scheme_hash_table_type, /* 68 */ - scheme_cpointer_type, /* 69 */ - scheme_offset_cpointer_type, /* 70 */ - scheme_weak_box_type, /* 71 */ - scheme_ephemeron_type, /* 72 */ - scheme_struct_type_type, /* 73 */ - scheme_module_index_type, /* 74 */ - scheme_set_macro_type, /* 75 */ - scheme_listener_type, /* 76 */ - scheme_namespace_type, /* 77 */ - scheme_config_type, /* 78 */ - scheme_stx_type, /* 79 */ - scheme_will_executor_type, /* 80 */ - scheme_custodian_type, /* 81 */ - scheme_random_state_type, /* 82 */ - scheme_regexp_type, /* 83 */ - scheme_bucket_type, /* 84 */ - scheme_bucket_table_type, /* 85 */ - scheme_subprocess_type, /* 86 */ - scheme_compilation_top_type, /* 87 */ - scheme_wrap_chunk_type, /* 88 */ - scheme_eval_waiting_type, /* 89 */ - scheme_tail_call_waiting_type, /* 90 */ - scheme_undefined_type, /* 91 */ - scheme_struct_property_type, /* 92 */ - scheme_multiple_values_type, /* 93 */ - scheme_placeholder_type, /* 94 */ - scheme_table_placeholder_type, /* 95 */ - scheme_case_lambda_sequence_type, /* 96 */ - scheme_begin0_sequence_type, /* 97 */ - scheme_rename_table_type, /* 98 */ - scheme_rename_table_set_type, /* 99 */ - scheme_module_type, /* 100 */ - scheme_svector_type, /* 101 */ - scheme_lazy_macro_type, /* 102 */ - scheme_resolve_prefix_type, /* 103 */ - scheme_security_guard_type, /* 104 */ - scheme_indent_type, /* 105 */ - scheme_udp_type, /* 106 */ - scheme_udp_evt_type, /* 107 */ - scheme_tcp_accept_evt_type, /* 108 */ - scheme_id_macro_type, /* 109 */ - scheme_evt_set_type, /* 110 */ - scheme_wrap_evt_type, /* 111 */ - scheme_handle_evt_type, /* 112 */ - scheme_nack_guard_evt_type, /* 113 */ - scheme_semaphore_repost_type, /* 114 */ - scheme_channel_type, /* 115 */ - scheme_channel_put_type, /* 116 */ - scheme_thread_resume_type, /* 117 */ - scheme_thread_suspend_type, /* 118 */ - scheme_thread_dead_type, /* 119 */ - scheme_poll_evt_type, /* 120 */ - scheme_nack_evt_type, /* 121 */ - scheme_module_registry_type, /* 122 */ - scheme_thread_set_type, /* 123 */ - scheme_string_converter_type, /* 124 */ - scheme_alarm_type, /* 125 */ - scheme_thread_cell_type, /* 126 */ - scheme_channel_syncer_type, /* 127 */ - scheme_special_comment_type, /* 128 */ - scheme_write_evt_type, /* 129 */ - scheme_always_evt_type, /* 130 */ - scheme_never_evt_type, /* 131 */ - scheme_progress_evt_type, /* 132 */ - scheme_certifications_type, /* 133 */ - scheme_already_comp_type, /* 134 */ - scheme_readtable_type, /* 135 */ - scheme_intdef_context_type, /* 136 */ - scheme_lexical_rib_type, /* 137 */ - scheme_thread_cell_values_type, /* 138 */ - scheme_global_ref_type, /* 139 */ - scheme_cont_mark_chain_type, /* 140 */ - scheme_raw_pair_type, /* 141 */ - scheme_prompt_type, /* 142 */ - scheme_prompt_tag_type, /* 143 */ - scheme_expanded_syntax_type, /* 144 */ - scheme_delay_syntax_type, /* 145 */ - scheme_cust_box_type, /* 146 */ - scheme_resolved_module_path_type, /* 147 */ - scheme_module_phase_exports_type, /* 148 */ + scheme_complex_type, /* 42 */ + scheme_char_string_type, /* 43 */ + scheme_byte_string_type, /* 44 */ + scheme_unix_path_type, /* 45 */ + scheme_windows_path_type, /* 46 */ + scheme_symbol_type, /* 47 */ + scheme_keyword_type, /* 48 */ + scheme_null_type, /* 49 */ + scheme_pair_type, /* 50 */ + scheme_mutable_pair_type, /* 51 */ + scheme_vector_type, /* 52 */ + scheme_inspector_type, /* 53 */ + scheme_input_port_type, /* 54 */ + scheme_output_port_type, /* 55 */ + scheme_eof_type, /* 56 */ + scheme_true_type, /* 57 */ + scheme_false_type, /* 58 */ + scheme_void_type, /* 59 */ + scheme_syntax_compiler_type, /* 60 */ + scheme_macro_type, /* 61 */ + scheme_box_type, /* 62 */ + scheme_thread_type, /* 63 */ + scheme_stx_offset_type, /* 64 */ + scheme_cont_mark_set_type, /* 65 */ + scheme_sema_type, /* 66 */ + scheme_hash_table_type, /* 67 */ + scheme_cpointer_type, /* 68 */ + scheme_offset_cpointer_type, /* 69 */ + scheme_weak_box_type, /* 70 */ + scheme_ephemeron_type, /* 71 */ + scheme_struct_type_type, /* 72 */ + scheme_module_index_type, /* 73 */ + scheme_set_macro_type, /* 74 */ + scheme_listener_type, /* 75 */ + scheme_namespace_type, /* 76 */ + scheme_config_type, /* 77 */ + scheme_stx_type, /* 78 */ + scheme_will_executor_type, /* 79 */ + scheme_custodian_type, /* 80 */ + scheme_random_state_type, /* 81 */ + scheme_regexp_type, /* 82 */ + scheme_bucket_type, /* 83 */ + scheme_bucket_table_type, /* 84 */ + scheme_subprocess_type, /* 85 */ + scheme_compilation_top_type, /* 86 */ + scheme_wrap_chunk_type, /* 87 */ + scheme_eval_waiting_type, /* 88 */ + scheme_tail_call_waiting_type, /* 89 */ + scheme_undefined_type, /* 90 */ + scheme_struct_property_type, /* 91 */ + scheme_multiple_values_type, /* 92 */ + scheme_placeholder_type, /* 93 */ + scheme_table_placeholder_type, /* 94 */ + scheme_case_lambda_sequence_type, /* 95 */ + scheme_begin0_sequence_type, /* 96 */ + scheme_rename_table_type, /* 97 */ + scheme_rename_table_set_type, /* 98 */ + scheme_module_type, /* 99 */ + scheme_svector_type, /* 100 */ + scheme_lazy_macro_type, /* 101 */ + scheme_resolve_prefix_type, /* 102 */ + scheme_security_guard_type, /* 103 */ + scheme_indent_type, /* 104 */ + scheme_udp_type, /* 105 */ + scheme_udp_evt_type, /* 106 */ + scheme_tcp_accept_evt_type, /* 107 */ + scheme_id_macro_type, /* 108 */ + scheme_evt_set_type, /* 109 */ + scheme_wrap_evt_type, /* 110 */ + scheme_handle_evt_type, /* 111 */ + scheme_nack_guard_evt_type, /* 112 */ + scheme_semaphore_repost_type, /* 113 */ + scheme_channel_type, /* 114 */ + scheme_channel_put_type, /* 115 */ + scheme_thread_resume_type, /* 116 */ + scheme_thread_suspend_type, /* 117 */ + scheme_thread_dead_type, /* 118 */ + scheme_poll_evt_type, /* 119 */ + scheme_nack_evt_type, /* 120 */ + scheme_module_registry_type, /* 121 */ + scheme_thread_set_type, /* 122 */ + scheme_string_converter_type, /* 123 */ + scheme_alarm_type, /* 124 */ + scheme_thread_cell_type, /* 125 */ + scheme_channel_syncer_type, /* 126 */ + scheme_special_comment_type, /* 127 */ + scheme_write_evt_type, /* 128 */ + scheme_always_evt_type, /* 129 */ + scheme_never_evt_type, /* 130 */ + scheme_progress_evt_type, /* 131 */ + scheme_certifications_type, /* 132 */ + scheme_already_comp_type, /* 133 */ + scheme_readtable_type, /* 134 */ + scheme_intdef_context_type, /* 135 */ + scheme_lexical_rib_type, /* 136 */ + scheme_thread_cell_values_type, /* 137 */ + scheme_global_ref_type, /* 138 */ + scheme_cont_mark_chain_type, /* 139 */ + scheme_raw_pair_type, /* 140 */ + scheme_prompt_type, /* 141 */ + scheme_prompt_tag_type, /* 142 */ + scheme_expanded_syntax_type, /* 143 */ + scheme_delay_syntax_type, /* 144 */ + scheme_cust_box_type, /* 145 */ + scheme_resolved_module_path_type, /* 146 */ + scheme_module_phase_exports_type, /* 147 */ #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_constant_binding, /* 152 */ - scheme_rt_resolve_info, /* 153 */ - scheme_rt_optimize_info, /* 154 */ - scheme_rt_compile_info, /* 155 */ - scheme_rt_cont_mark, /* 156 */ - scheme_rt_saved_stack, /* 157 */ - scheme_rt_reply_item, /* 158 */ - scheme_rt_closure_info, /* 159 */ - scheme_rt_overflow, /* 160 */ - scheme_rt_overflow_jmp, /* 161 */ - scheme_rt_meta_cont, /* 162 */ - scheme_rt_dyn_wind_cell, /* 163 */ - scheme_rt_dyn_wind_info, /* 164 */ - scheme_rt_dyn_wind, /* 165 */ - scheme_rt_dup_check, /* 166 */ - scheme_rt_thread_memory, /* 167 */ - scheme_rt_input_file, /* 168 */ - scheme_rt_input_fd, /* 169 */ - scheme_rt_oskit_console_input, /* 170 */ - scheme_rt_tested_input_file, /* 171 */ - scheme_rt_tested_output_file, /* 172 */ - scheme_rt_indexed_string, /* 173 */ - scheme_rt_output_file, /* 174 */ - scheme_rt_load_handler_data, /* 175 */ - scheme_rt_pipe, /* 176 */ - scheme_rt_beos_process, /* 177 */ - scheme_rt_system_child, /* 178 */ - scheme_rt_tcp, /* 179 */ - scheme_rt_write_data, /* 180 */ - scheme_rt_tcp_select_info, /* 181 */ - scheme_rt_namespace_option, /* 182 */ - scheme_rt_param_data, /* 183 */ - scheme_rt_will, /* 184 */ - scheme_rt_will_registration, /* 185 */ - scheme_rt_struct_proc_info, /* 186 */ - scheme_rt_linker_name, /* 187 */ - scheme_rt_param_map, /* 188 */ - scheme_rt_finalization, /* 189 */ - scheme_rt_finalizations, /* 190 */ - scheme_rt_cpp_object, /* 191 */ - scheme_rt_cpp_array_object, /* 192 */ - scheme_rt_stack_object, /* 193 */ - scheme_rt_preallocated_object, /* 194 */ - scheme_thread_hop_type, /* 195 */ - scheme_rt_srcloc, /* 196 */ - scheme_rt_evt, /* 197 */ - scheme_rt_syncing, /* 198 */ - scheme_rt_comp_prefix, /* 199 */ - scheme_rt_user_input, /* 200 */ - scheme_rt_user_output, /* 201 */ - scheme_rt_compact_port, /* 202 */ - scheme_rt_read_special_dw, /* 203 */ - scheme_rt_regwork, /* 204 */ - scheme_rt_buf_holder, /* 205 */ - scheme_rt_parameterization, /* 206 */ - scheme_rt_print_params, /* 207 */ - scheme_rt_read_params, /* 208 */ - scheme_rt_native_code, /* 209 */ - scheme_rt_native_code_plus_case, /* 210 */ - scheme_rt_jitter_data, /* 211 */ - scheme_rt_module_exports, /* 212 */ - scheme_rt_delay_load_info, /* 213 */ - scheme_rt_marshal_info, /* 214 */ - scheme_rt_unmarshal_info, /* 215 */ - scheme_rt_runstack, /* 216 */ - scheme_rt_sfs_info, /* 217 */ - scheme_rt_validate_clearing, /* 218 */ + scheme_rt_comp_env, /* 150 */ + scheme_rt_constant_binding, /* 151 */ + scheme_rt_resolve_info, /* 152 */ + scheme_rt_optimize_info, /* 153 */ + scheme_rt_compile_info, /* 154 */ + scheme_rt_cont_mark, /* 155 */ + scheme_rt_saved_stack, /* 156 */ + scheme_rt_reply_item, /* 157 */ + scheme_rt_closure_info, /* 158 */ + scheme_rt_overflow, /* 159 */ + scheme_rt_overflow_jmp, /* 160 */ + scheme_rt_meta_cont, /* 161 */ + scheme_rt_dyn_wind_cell, /* 162 */ + scheme_rt_dyn_wind_info, /* 163 */ + scheme_rt_dyn_wind, /* 164 */ + scheme_rt_dup_check, /* 165 */ + scheme_rt_thread_memory, /* 166 */ + scheme_rt_input_file, /* 167 */ + scheme_rt_input_fd, /* 168 */ + scheme_rt_oskit_console_input, /* 169 */ + scheme_rt_tested_input_file, /* 170 */ + scheme_rt_tested_output_file, /* 171 */ + scheme_rt_indexed_string, /* 172 */ + scheme_rt_output_file, /* 173 */ + scheme_rt_load_handler_data, /* 174 */ + scheme_rt_pipe, /* 175 */ + scheme_rt_beos_process, /* 176 */ + scheme_rt_system_child, /* 177 */ + scheme_rt_tcp, /* 178 */ + scheme_rt_write_data, /* 179 */ + scheme_rt_tcp_select_info, /* 180 */ + scheme_rt_namespace_option, /* 181 */ + scheme_rt_param_data, /* 182 */ + scheme_rt_will, /* 183 */ + scheme_rt_will_registration, /* 184 */ + scheme_rt_struct_proc_info, /* 185 */ + scheme_rt_linker_name, /* 186 */ + scheme_rt_param_map, /* 187 */ + scheme_rt_finalization, /* 188 */ + scheme_rt_finalizations, /* 189 */ + scheme_rt_cpp_object, /* 190 */ + scheme_rt_cpp_array_object, /* 191 */ + scheme_rt_stack_object, /* 192 */ + scheme_rt_preallocated_object, /* 193 */ + scheme_thread_hop_type, /* 194 */ + scheme_rt_srcloc, /* 195 */ + scheme_rt_evt, /* 196 */ + scheme_rt_syncing, /* 197 */ + scheme_rt_comp_prefix, /* 198 */ + scheme_rt_user_input, /* 199 */ + scheme_rt_user_output, /* 200 */ + scheme_rt_compact_port, /* 201 */ + scheme_rt_read_special_dw, /* 202 */ + scheme_rt_regwork, /* 203 */ + scheme_rt_buf_holder, /* 204 */ + scheme_rt_parameterization, /* 205 */ + scheme_rt_print_params, /* 206 */ + scheme_rt_read_params, /* 207 */ + scheme_rt_native_code, /* 208 */ + scheme_rt_native_code_plus_case, /* 209 */ + scheme_rt_jitter_data, /* 210 */ + scheme_rt_module_exports, /* 211 */ + scheme_rt_delay_load_info, /* 212 */ + scheme_rt_marshal_info, /* 213 */ + scheme_rt_unmarshal_info, /* 214 */ + scheme_rt_runstack, /* 215 */ + scheme_rt_sfs_info, /* 216 */ + scheme_rt_validate_clearing, /* 217 */ #endif _scheme_last_type_ diff --git a/src/mzscheme/src/type.c b/src/mzscheme/src/type.c index 62e0d3c99f..9ccb9072f3 100644 --- a/src/mzscheme/src/type.c +++ b/src/mzscheme/src/type.c @@ -177,7 +177,6 @@ scheme_init_type (Scheme_Env *env) set_name(scheme_ephemeron_type, ""); set_name(scheme_rational_type, ""); set_name(scheme_complex_type, ""); - set_name(scheme_complex_izi_type, ""); set_name(scheme_struct_type_type, ""); set_name(scheme_listener_type, ""); set_name(scheme_tcp_accept_evt_type, ""); @@ -513,7 +512,6 @@ void scheme_register_traversers(void) GC_REG_TRAV(scheme_rational_type, rational_obj); GC_REG_TRAV(scheme_float_type, float_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_char_string_type, string_obj); GC_REG_TRAV(scheme_byte_string_type, bstring_obj);