diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-09-13 15:42:49 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-09-13 15:42:49 -0400 |
commit | 0226c2f736c77d10898edb4cd8b041fc0e33658e (patch) | |
tree | 2234b4be7c89100a0e4728d583c1cb3b8c5e1a02 | |
parent | 2c958c18c895edf9bf2aceb7c245f9e778aea520 (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.m | 6 |
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, |