Add float optizations back (but only on floats).

This commit is contained in:
Eric Dobson 2014-01-13 09:18:32 -08:00
parent 70d9f4bdb6
commit dad6c6dec4
5 changed files with 36 additions and 17 deletions

View File

@ -17,16 +17,20 @@
(define binary-float-ops
(mk-float-tbl (list #'+ #'- #'* #'/ #'min #'max)))
(define binary-float-comps
(dict-set
(dict-set
(dict-set*
(mk-float-tbl (list #'= #'<= #'< #'> #'>=))
;; not a comparison, but takes 2 floats and does not return a float,
;; unlike binary-float-ops
#'make-rectangular #'unsafe-make-flrectangular)
#'make-flrectangular #'unsafe-make-flrectangular))
#'make-rectangular #'unsafe-make-flrectangular
#'make-flrectangular #'unsafe-make-flrectangular))
(define unary-float-ops
(mk-float-tbl (list #'abs #'sin #'cos #'tan #'asin #'acos #'atan #'log #'exp
#'sqrt #'round #'floor #'ceiling #'truncate)))
(dict-set*
(mk-float-tbl (list #'abs #'sin #'cos #'tan #'asin #'acos #'atan #'log #'exp
#'sqrt #'round #'floor #'ceiling #'truncate))
#'magnitude #'unsafe-flabs
#'real-part #'#%expression
#'flreal-part #'#%expression
#'unsafe-flreal-part #'#%experession))
(define-literal-syntax-class -)
(define-literal-syntax-class /)

View File

@ -1,7 +1,8 @@
#;#;
#<<END
TR missed opt: expt.rkt 14:13 (expt (sin 0.25) 1.0) -- unexpected complex type
TR opt: expt.rkt 14:19 (sin 0.25) -- unary float
TR info: expt.rkt 15:2 (real-part (expt (sin 0.25) 1.0)) -- exact real arith
TR missed opt: expt.rkt 15:13 (expt (sin 0.25) 1.0) -- unexpected complex type
TR opt: expt.rkt 15:19 (sin 0.25) -- unary float
END
""

View File

@ -1,5 +1,6 @@
#;#;
#<<END
TR info: invalid-inexact-complex-parts.rkt 12:0 (real-part 1+2i) -- exact real arith
END
#<<END
1

View File

@ -1,6 +1,7 @@
#;#;
#<<END
TR missed opt: invalid-log-complex.rkt 13:11 (log (ann 2.0 Float)) -- unexpected complex type
TR info: invalid-log-complex.rkt 14:0 (real-part (log (ann 2.0 Float))) -- exact real arith
TR missed opt: invalid-log-complex.rkt 14:11 (log (ann 2.0 Float)) -- unexpected complex type
END
#<<END
0.6931471805599453

View File

@ -1,13 +1,25 @@
#;#;
#<<END
TR missed opt: pr13468.rkt 68:5 (/ (ann 0.0+0.0i Float-Complex) (ann 1 Number)) -- Float-Complex division, potential exact 0s on the rhss -- caused by: 68:42 1
TR missed opt: pr13468.rkt 71:5 (expt (ann -5.0 Flonum) (ann 2.0 Flonum)) -- unexpected complex type
TR opt: pr13468.rkt 66:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 66:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 66:5 (- (ann 6.0+2.3i Float-Complex)) -- unboxed unary float complex
TR opt: pr13468.rkt 67:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 67:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 67:5 (/ (ann 6.0+2.3i Float-Complex)) -- unboxed unary float complex
TR missed opt: pr13468.rkt 80:5 (/ (ann 0.0+0.0i Float-Complex) (ann 1 Number)) -- Float-Complex division, potential exact 0s on the rhss -- caused by: 80:42 1
TR missed opt: pr13468.rkt 83:5 (expt (ann -5.0 Flonum) (ann 2.0 Flonum)) -- unexpected complex type
TR opt: pr13468.rkt 104:5 (magnitude (ann 0.0 Flonum-Zero)) -- unary float
TR opt: pr13468.rkt 105:5 (magnitude (ann 6.0 Positive-Flonum)) -- unary float
TR opt: pr13468.rkt 106:5 (magnitude (ann 6.0 Nonnegative-Flonum)) -- unary float
TR opt: pr13468.rkt 107:5 (magnitude (ann -6.0 Nonpositive-Flonum)) -- unary float
TR opt: pr13468.rkt 108:5 (magnitude (ann -6.0 Negative-Flonum)) -- unary float
TR opt: pr13468.rkt 109:5 (magnitude (ann 6.0 Flonum)) -- unary float
TR opt: pr13468.rkt 130:5 (real-part (ann 0.0 Flonum-Zero)) -- unary float
TR opt: pr13468.rkt 131:5 (real-part (ann 6.0 Positive-Flonum)) -- unary float
TR opt: pr13468.rkt 132:5 (real-part (ann 6.0 Nonnegative-Flonum)) -- unary float
TR opt: pr13468.rkt 133:5 (real-part (ann -6.0 Nonpositive-Flonum)) -- unary float
TR opt: pr13468.rkt 134:5 (real-part (ann -6.0 Negative-Flonum)) -- unary float
TR opt: pr13468.rkt 135:5 (real-part (ann 6.0 Flonum)) -- unary float
TR opt: pr13468.rkt 78:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 78:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 78:5 (- (ann 6.0+2.3i Float-Complex)) -- unboxed unary float complex
TR opt: pr13468.rkt 79:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 79:13 6.0+2.3i -- unboxed literal
TR opt: pr13468.rkt 79:5 (/ (ann 6.0+2.3i Float-Complex)) -- unboxed unary float complex
END
#<<END
-6.0-2.3i