Added exact, inexact
This commit is contained in:
parent
bbe077cd5f
commit
efb59a4f46
BIN
src/ikarus.boot
BIN
src/ikarus.boot
Binary file not shown.
|
@ -7,13 +7,13 @@
|
|||
|
||||
(library (ikarus flonums)
|
||||
(export $flonum->exact $flonum-signed-biased-exponent flonum-parts
|
||||
inexact->exact $flonum-rational? $flonum-integer? $flzero?
|
||||
inexact->exact exact $flonum-rational? $flonum-integer? $flzero?
|
||||
$flnegative? flpositive? flabs)
|
||||
(import
|
||||
(ikarus system $bytevectors)
|
||||
(except (ikarus system $flonums) $flonum-signed-biased-exponent
|
||||
$flonum-rational? $flonum-integer?)
|
||||
(except (ikarus) inexact->exact flpositive? flabs))
|
||||
(except (ikarus) inexact->exact exact flpositive? flabs))
|
||||
|
||||
(define (flonum-bytes f)
|
||||
(unless (flonum? f)
|
||||
|
@ -109,6 +109,16 @@
|
|||
[else
|
||||
(error 'inexact->exact "~s is not an inexact number" x)]))
|
||||
|
||||
(define (exact x)
|
||||
(cond
|
||||
[(flonum? x)
|
||||
(or ($flonum->exact x)
|
||||
(error 'exact "~s has no real value" x))]
|
||||
[(or (fixnum? x) (ratnum? x) (bignum? x)) x]
|
||||
[else
|
||||
(error 'exact "~s is not an inexact number" x)]))
|
||||
|
||||
|
||||
(define (flpositive? x)
|
||||
(if (flonum? x)
|
||||
($fl> x 0.0)
|
||||
|
@ -130,7 +140,7 @@
|
|||
positive? negative? expt gcd lcm numerator denominator exact-integer-sqrt
|
||||
quotient+remainder number->string string->number min max
|
||||
abs
|
||||
exact->inexact floor ceiling round log fl=? fl<? fl<=? fl>?
|
||||
exact->inexact inexact floor ceiling round log fl=? fl<? fl<=? fl>?
|
||||
fl>=? fl+ fl- fl* fl/ flsqrt flmin flzero? flnegative?
|
||||
sin cos atan sqrt
|
||||
flround flmax)
|
||||
|
@ -146,7 +156,7 @@
|
|||
remainder modulo even? odd? quotient+remainder number->string
|
||||
positive? negative?
|
||||
string->number expt gcd lcm numerator denominator
|
||||
exact->inexact floor ceiling round log
|
||||
exact->inexact inexact floor ceiling round log
|
||||
exact-integer-sqrt min max abs
|
||||
fl=? fl<? fl<=? fl>? fl>=? fl+ fl- fl* fl/ flsqrt flmin
|
||||
flzero? flnegative?
|
||||
|
@ -944,6 +954,17 @@
|
|||
(error 'exact->inexact
|
||||
"~s is not an exact number" x)])))
|
||||
|
||||
(define inexact
|
||||
(lambda (x)
|
||||
(cond
|
||||
[(fixnum? x) ($fixnum->flonum x)]
|
||||
[(bignum? x) (bignum->flonum x)]
|
||||
[(ratnum? x)
|
||||
(binary/ (exact->inexact ($ratnum-n x)) ($ratnum-d x))]
|
||||
[(flonum? x) x]
|
||||
[else
|
||||
(error 'inexact "~s is not a number" x)])))
|
||||
|
||||
(define inexact?
|
||||
(lambda (x)
|
||||
(cond
|
||||
|
|
|
@ -613,7 +613,7 @@
|
|||
(tokenize-decimal-no-digits p (cons c ls) exact?)]
|
||||
[else (num-error "invalid sequence" (cons c ls))])))
|
||||
(define (num-error str ls)
|
||||
(error "invalid numeric sequence ~a"
|
||||
(error 'read "invalid numeric sequence ~a"
|
||||
(list->string (reverse ls))))
|
||||
(define (tokenize-hashnum p n)
|
||||
(let ([c (read-char p)])
|
||||
|
|
|
@ -466,6 +466,8 @@
|
|||
[exact-integer-sqrt i r]
|
||||
[exact->inexact i r]
|
||||
[inexact->exact i r]
|
||||
[exact i r]
|
||||
[inexact i r]
|
||||
[symbol? i r symbols]
|
||||
[symbol=? i r symbols]
|
||||
[gensym? i symbols]
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
[eqv? C ba]
|
||||
[error S ba]
|
||||
[even? C ba]
|
||||
[exact S ba]
|
||||
[exact C ba]
|
||||
[exact-integer-sqrt C ba]
|
||||
[exact? C ba]
|
||||
[exp S ba]
|
||||
|
@ -152,7 +152,7 @@
|
|||
[for-each S ba]
|
||||
[gcd C ba]
|
||||
[imag-part D ba]
|
||||
[inexact S ba]
|
||||
[inexact C ba]
|
||||
[inexact? S ba]
|
||||
[infinite? S ba]
|
||||
[integer->char C ba]
|
||||
|
@ -178,7 +178,7 @@
|
|||
[mod S ba]
|
||||
[mod0 S ba]
|
||||
[nan? S ba]
|
||||
[negative? S ba]
|
||||
[negative? C ba]
|
||||
[not C ba]
|
||||
[null? C ba]
|
||||
[number->string C ba]
|
||||
|
@ -528,9 +528,9 @@
|
|||
[exit C pr]
|
||||
|
||||
[delay D r5]
|
||||
[exact->inexact D r5]
|
||||
[exact->inexact C r5]
|
||||
[force D r5]
|
||||
[inexact->exact D r5]
|
||||
[inexact->exact C r5]
|
||||
[modulo D r5]
|
||||
[remainder D r5]
|
||||
[null-environment D r5]
|
||||
|
|
Loading…
Reference in New Issue