aboutsummaryrefslogtreecommitdiff
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
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.
-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,