From d55cf6d13a137a3fca8ff25e5c1568401d1c902d Mon Sep 17 00:00:00 2001 From: Vincent St-Amour Date: Tue, 6 Jul 2010 18:10:44 -0400 Subject: [PATCH] Avoided duplicate computation in inexact complex division. original commit: de52d2ce9ffede21df37e74edb6cdb47bfab1828 --- collects/typed-scheme/private/optimize.rkt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/collects/typed-scheme/private/optimize.rkt b/collects/typed-scheme/private/optimize.rkt index 2a80da4e..9509f935 100644 --- a/collects/typed-scheme/private/optimize.rkt +++ b/collects/typed-scheme/private/optimize.rkt @@ -253,11 +253,12 @@ (b (unsafe-flimag-part t1)) (c (unsafe-flreal-part t2)) (d (unsafe-flimag-part t2))) - (unsafe-make-flrectangular - (unsafe-fl/ (unsafe-fl+ (unsafe-fl* a c) (unsafe-fl* b d)) - (unsafe-fl+ (unsafe-fl* c c) (unsafe-fl* d d))) - (unsafe-fl/ (unsafe-fl- (unsafe-fl* b c) (unsafe-fl* a d)) - (unsafe-fl+ (unsafe-fl* c c) (unsafe-fl* d d))))))))) + (let ((den (unsafe-fl+ (unsafe-fl* c c) (unsafe-fl* d d)))) + (unsafe-make-flrectangular + (unsafe-fl/ (unsafe-fl+ (unsafe-fl* a c) (unsafe-fl* b d)) + den) + (unsafe-fl/ (unsafe-fl- (unsafe-fl* b c) (unsafe-fl* a d)) + den)))))))) (pattern (#%plain-app (~and op (~literal exact->inexact)) n:fixnum-opt-expr) #:with opt