Improved behavior of coercions with n-ary arithmeric operations.
original commit: d078305a59368156e0c977798af4cb805bc3b679
This commit is contained in:
parent
53f7550b51
commit
43683352c5
|
@ -235,29 +235,24 @@
|
|||
|
||||
[* (apply cl->*
|
||||
(append (for/list ([t (list -Pos -Nat -Integer -ExactRational -NonnegativeFlonum -Flonum)]) (->* (list) t t))
|
||||
(list (->* (list -Pos) -NonnegativeFlonum -NonnegativeFlonum))
|
||||
(list (->* (list -NonnegativeFlonum) -Pos -NonnegativeFlonum))
|
||||
(list (->* (list -Pos) -Flonum -Flonum))
|
||||
(list (->* (list -Flonum) -Pos -Flonum))
|
||||
(list (->* (list) (Un -Pos -NonnegativeFlonum) -NonnegativeFlonum))
|
||||
(list (->* (list) (Un -Pos -Flonum) -Flonum))
|
||||
(list (->* (list) -Real -Real))
|
||||
(list (->* (list -Flonum) -InexactComplex -InexactComplex))
|
||||
(list (->* (list -InexactComplex) -Flonum -InexactComplex))
|
||||
(list (->* (list) -InexactComplex -InexactComplex))
|
||||
(list (->* (list) (Un -InexactComplex -Flonum) -InexactComplex))
|
||||
(list (->* (list) N N))))]
|
||||
[+ (apply cl->*
|
||||
(append (list (->* (list -Pos) -Nat -Pos))
|
||||
(list (->* (list -Nat) -Pos -Pos))
|
||||
(list (->* (list -Nat -Pos) -Nat -Pos))
|
||||
(for/list ([t (list -Nat -Integer -ExactRational -NonnegativeFlonum -Flonum)]) (->* (list) t t))
|
||||
(list (->* (list -Nat) -NonnegativeFlonum -NonnegativeFlonum))
|
||||
(list (->* (list -NonnegativeFlonum) -Nat -NonnegativeFlonum))
|
||||
;; special cases for promotion to inexact, not exhaustive
|
||||
;; valid for + and -, but not for * and /, since (* <float> 0) is exact 0 (i.e. not a float)
|
||||
(list (->* (list) (Un -Nat -NonnegativeFlonum) -NonnegativeFlonum))
|
||||
(list (->* (list -Flonum) -Real -Flonum))
|
||||
(list (->* (list -Real -Flonum) -Real -Flonum))
|
||||
(list (->* (list) -Real -Real))
|
||||
(list (->* (list N) -InexactComplex -InexactComplex))
|
||||
(list (->* (list) (Un -Real -InexactComplex) -InexactComplex))
|
||||
(list (->* (list -InexactComplex) N -InexactComplex))
|
||||
(list (->* (list) -InexactComplex -InexactComplex))
|
||||
(list (->* (list N -InexactComplex) N -InexactComplex))
|
||||
(list (->* (list) N N))))]
|
||||
|
||||
[- (apply cl->*
|
||||
|
@ -266,9 +261,9 @@
|
|||
(list (->* (list -Flonum) -Real -Flonum))
|
||||
(list (->* (list -Real -Flonum) -Real -Flonum))
|
||||
(list (->* (list -Real) -Real -Real))
|
||||
(list (->* (list N) -InexactComplex -InexactComplex))
|
||||
(list (->* (list) (Un -Real -InexactComplex) -InexactComplex))
|
||||
(list (->* (list -InexactComplex) N -InexactComplex))
|
||||
(list (->* (list -InexactComplex) -InexactComplex -InexactComplex))
|
||||
(list (->* (list N -InexactComplex) N -InexactComplex))
|
||||
(list (->* (list N) N N))))]
|
||||
[/ (apply cl->*
|
||||
(append (list (->* (list -Integer) -Integer -ExactRational))
|
||||
|
@ -277,8 +272,7 @@
|
|||
;; only exact 0 as first argument can cause the result of a division involving inexacts to be exact
|
||||
(list (->* (list -Flonum) -Real -Flonum))
|
||||
(list (->* (list -Real) -Real -Real))
|
||||
(list (->* (list -Flonum) -InexactComplex -InexactComplex))
|
||||
(list (->* (list -InexactComplex) -Flonum -InexactComplex))
|
||||
(list (->* (list (Un -Flonum -InexactComplex)) (Un -Real -InexactComplex) -InexactComplex))
|
||||
(list (->* (list -InexactComplex) -InexactComplex -InexactComplex))
|
||||
(list (->* (list N) N N))))]
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user