diff options
author | Erik Schnetter <schnetter@gmail.com> | 2012-09-08 15:22:11 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2012-09-08 15:22:11 -0400 |
commit | 84338f2fd6af2160bf2ca4f44d7beacdba4341fc (patch) | |
tree | 8f95549cb6a5cf1cf620b7437e0e4d6a95cb4888 /Tools/CodeGen/CodeGenCactus.m | |
parent | a5c91279f1a58305c657b25dd399eaefd37ed8dd (diff) |
Handle Piecewise[] in code generation
Replace Piecewise[] by IfThen[] calls.
Unfortunately, this does not work with vectorisation.
Diffstat (limited to 'Tools/CodeGen/CodeGenCactus.m')
-rw-r--r-- | Tools/CodeGen/CodeGenCactus.m | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Tools/CodeGen/CodeGenCactus.m b/Tools/CodeGen/CodeGenCactus.m index 33b1c6b..9c85bd4 100644 --- a/Tools/CodeGen/CodeGenCactus.m +++ b/Tools/CodeGen/CodeGenCactus.m @@ -741,6 +741,16 @@ DefFn[ rhs = rhs /. 8/3 -> keightthird; rhs = rhs /. -8/3 -> -keightthird; *) + + (* Handle Piecewise function *) + (* TODO: This does not work with vectorisation, since IfThen + there expects a constant condition *) + rhs = rhs /. Piecewise -> piecewise1 + //. piecewise1[pairs_List, val_:0] :> + If[pairs==={}, val, + IfThen[First[pairs][[2]], + First[pairs][[1]], + piecewise1[Rest[pairs], val]]]; (* Remove parentheses *) rhs = rhs //. Parenthesis[xx_] -> xx; |