* subtraction (-) now understands ratnums.
This commit is contained in:
parent
ca257870ce
commit
e1d0d4aca6
BIN
src/ikarus.boot
BIN
src/ikarus.boot
Binary file not shown.
|
@ -386,6 +386,9 @@
|
||||||
(foreign-call "ikrt_fxbnminus" x y)]
|
(foreign-call "ikrt_fxbnminus" x y)]
|
||||||
[(flonum? y)
|
[(flonum? y)
|
||||||
($fl- (fixnum->flonum x) y)]
|
($fl- (fixnum->flonum x) y)]
|
||||||
|
[(ratnum? y)
|
||||||
|
(let ([n ($ratnum-n y)] [d ($ratnum-d y)])
|
||||||
|
(binary/ (binary- (binary* d x) n) d))]
|
||||||
[else
|
[else
|
||||||
(error '- "~s is not a number" y)])]
|
(error '- "~s is not a number" y)])]
|
||||||
[(bignum? x)
|
[(bignum? x)
|
||||||
|
@ -396,6 +399,9 @@
|
||||||
(foreign-call "ikrt_bnbnminus" x y)]
|
(foreign-call "ikrt_bnbnminus" x y)]
|
||||||
[(flonum? y)
|
[(flonum? y)
|
||||||
($fl- (bignum->flonum x) y)]
|
($fl- (bignum->flonum x) y)]
|
||||||
|
[(ratnum? y)
|
||||||
|
(let ([n ($ratnum-n y)] [d ($ratnum-d y)])
|
||||||
|
(binary/ (binary- (binary* d x) n) d))]
|
||||||
[else
|
[else
|
||||||
(error '- "~s is not a number" y)])]
|
(error '- "~s is not a number" y)])]
|
||||||
[(flonum? x)
|
[(flonum? x)
|
||||||
|
@ -406,8 +412,22 @@
|
||||||
($fl- x (bignum->flonum y))]
|
($fl- x (bignum->flonum y))]
|
||||||
[(flonum? y)
|
[(flonum? y)
|
||||||
($fl- x y)]
|
($fl- x y)]
|
||||||
|
[(ratnum? y)
|
||||||
|
(let ([n ($ratnum-n y)] [d ($ratnum-d y)])
|
||||||
|
(binary/ (binary- (binary* d x) n) d))]
|
||||||
[else
|
[else
|
||||||
(error '- "~s is not a number" y)])]
|
(error '- "~s is not a number" y)])]
|
||||||
|
[(ratnum? x)
|
||||||
|
(let ([nx ($ratnum-n x)] [dx ($ratnum-d x)])
|
||||||
|
(cond
|
||||||
|
[(or (fixnum? y) (bignum? y) (flonum? y))
|
||||||
|
(binary/ (binary- nx (binary* dx y)) dx)]
|
||||||
|
[(ratnum? y)
|
||||||
|
(let ([ny ($ratnum-n y)] [dy ($ratnum-d y)])
|
||||||
|
(binary/ (binary- (binary* nx dy) (binary* ny dx))
|
||||||
|
(binary* dx dy)))]
|
||||||
|
[else
|
||||||
|
(error '- "~s is not a number" y)]))]
|
||||||
[else (error '- "~s is not a number" x)])))
|
[else (error '- "~s is not a number" x)])))
|
||||||
|
|
||||||
(define binary*
|
(define binary*
|
||||||
|
|
Loading…
Reference in New Issue