aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/CodeGenCactus.m
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-09-13 15:42:49 -0400
committerErik Schnetter <schnetter@gmail.com>2012-09-13 15:42:49 -0400
commit0226c2f736c77d10898edb4cd8b041fc0e33658e (patch)
tree2234b4be7c89100a0e4728d583c1cb3b8c5e1a02 /Tools/CodeGen/CodeGenCactus.m
parent2c958c18c895edf9bf2aceb7c245f9e778aea520 (diff)
Don't convert small integers to reals during code generation
Don't convert small integers to reals during code generation. Small integers may be used in if conditions, and converting these to real numbers creates less efficient code.
Diffstat (limited to 'Tools/CodeGen/CodeGenCactus.m')
-rw-r--r--Tools/CodeGen/CodeGenCactus.m6
1 files changed, 4 insertions, 2 deletions
diff --git a/Tools/CodeGen/CodeGenCactus.m b/Tools/CodeGen/CodeGenCactus.m
index 16b29b1..1a50c7f 100644
--- a/Tools/CodeGen/CodeGenCactus.m
+++ b/Tools/CodeGen/CodeGenCactus.m
@@ -666,8 +666,10 @@ DefFn[
undoVect[expr_] := expr //. {
ToReal[x_] -> x,
- x_Integer -> 1.0*x, (* don't generate large integer constants *)
- x_Ratio -> N[x,30],
+ (* don't generate large integer constants *)
+ x_Integer /; Abs[x]>10^9 :> 1.0*x,
+ (* generate sufficient precision *)
+ x_Ratio :> N[x,30],
kneg[x_] -> -x,