aboutsummaryrefslogtreecommitdiff
path: root/Tools/CodeGen/CodeGenCactus.m
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2012-08-10 15:03:00 -0400
committerErik Schnetter <schnetter@gmail.com>2012-08-10 15:03:00 -0400
commitaa5bcad276b4d82741fe4a6a259f3857f9e589fc (patch)
tree8f4c6afae42ed8908e31340b0125ce4175912957 /Tools/CodeGen/CodeGenCactus.m
parent2c2bde2690d7e422e85d4441dbed0000de9140f8 (diff)
Delay converting integers to reals
Delay converting integers to reals, so that the simplification functions still act on integers. This improves the generated code.
Diffstat (limited to 'Tools/CodeGen/CodeGenCactus.m')
-rw-r--r--Tools/CodeGen/CodeGenCactus.m6
1 files changed, 5 insertions, 1 deletions
diff --git a/Tools/CodeGen/CodeGenCactus.m b/Tools/CodeGen/CodeGenCactus.m
index 222b030..953b394 100644
--- a/Tools/CodeGen/CodeGenCactus.m
+++ b/Tools/CodeGen/CodeGenCactus.m
@@ -532,7 +532,8 @@ DefFn[
(* Constants *)
expr = expr /. {
- x_Integer -> ToReal[1.0*x], (* don't generate large integer constants *)
+ x_Integer -> ToReal[x],
+ x_Ratio -> ToReal[x],
x_Real -> ToReal[x],
E -> ToReal[E],
Pi -> ToReal[Pi]};
@@ -664,6 +665,9 @@ DefFn[
undoVect[expr_] := expr //. {
ToReal[x_] -> x,
+ x_Integer -> 1.0*x, (* don't generate large integer constants *)
+ x_Ratio -> N[x,30],
+
kneg[x_] -> -x,
kadd[x_,y_] -> x+y,