From a0821131dc4e39b7eb895c81efd589e86e83967a Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 2 Apr 2013 13:56:16 -0400 Subject: [PATCH] Fix optimization on exp of complex numbers. Found using random testing. original commit: b808d2809e4856614248b2308d4a21bbca4400f7 --- .../typed-racket/optimizer/tests/complex-exp.rkt | 12 ++++++++++++ collects/typed-racket/optimizer/float-complex.rkt | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 collects/tests/typed-racket/optimizer/tests/complex-exp.rkt diff --git a/collects/tests/typed-racket/optimizer/tests/complex-exp.rkt b/collects/tests/typed-racket/optimizer/tests/complex-exp.rkt new file mode 100644 index 00000000..8b24fef9 --- /dev/null +++ b/collects/tests/typed-racket/optimizer/tests/complex-exp.rkt @@ -0,0 +1,12 @@ +#; +( +TR opt: complex-exp.rkt 12:8 0 -- float-arg-expr in complex ops +TR opt: complex-exp.rkt 12:3 (exp 0) -- unboxed unary float complex +TR opt: complex-exp.rkt 12:11 1.0+2.0i -- unboxed literal +TR opt: complex-exp.rkt 12:0 (- (exp 0) 1.0+2.0i) -- unboxed binary float complex +0.0-2.0i +) + +#lang typed/racket + +(- (exp 0) 1.0+2.0i) diff --git a/collects/typed-racket/optimizer/float-complex.rkt b/collects/typed-racket/optimizer/float-complex.rkt index 73621e74..0e32fefc 100644 --- a/collects/typed-racket/optimizer/float-complex.rkt +++ b/collects/typed-racket/optimizer/float-complex.rkt @@ -305,7 +305,7 @@ #'1.0)) ((real-binding) #,(if (syntax->datum #'c.imag-binding) #'(unsafe-fl* (unsafe-flcos c.imag-binding) scaling-factor) - #'0.0)) + #'1.0)) ((imag-binding) #,(if (syntax->datum #'c.imag-binding) #'(unsafe-fl* (unsafe-flsin c.imag-binding) scaling-factor) #'0.0)))))