diff options
author | Ian Hinder <ian.hinder@aei.mpg.de> | 2012-03-21 18:22:46 +0100 |
---|---|---|
committer | Ian Hinder <ian.hinder@aei.mpg.de> | 2012-03-21 18:22:46 +0100 |
commit | 016b5dc793e0f1855ccd532e258bf74f8a09d47b (patch) | |
tree | a380c8cc9c93e545d09065d1837dd50cda249c69 /Tools | |
parent | 15201cd05b255de629bde80938ccf18e23222452 (diff) |
KrancScript.m: Simplify and correct algebraic operations
Diffstat (limited to 'Tools')
-rw-r--r-- | Tools/CodeGen/KrancScript.m | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Tools/CodeGen/KrancScript.m b/Tools/CodeGen/KrancScript.m index 0853966..9be802d 100644 --- a/Tools/CodeGen/KrancScript.m +++ b/Tools/CodeGen/KrancScript.m @@ -148,13 +148,15 @@ process["func"["name"[name_],exprs__]] := process["expr"[mul_]] := process[mul]; process["expr"[]] := 0; -process["expr"[a_, "addop"["-"], b_,cs___]] := process[a] - process[b] + process["expr"[cs]]; -process["expr"[a_, "addop"["+"], bs__]] := process[a] + process["expr"[bs]]; + +(* Addition, subtraction, multiplication and division are all left-associative *) +process["expr"[cs___, a_, "addop"["+"], b_]] := process["expr"[cs,a]] + process[b]; +process["expr"[cs___, a_, "addop"["-"], b_]] := process["expr"[cs,a]] - process[b]; process["mul"[pow_]] := process[pow]; process["mul"[]] := 1; -process["mul"[a_, "mulop"["/"], b_,cs___]] := Times[process[a] / process[b],process["mul"[cs]]]; -process["mul"[a_, "mulop"["*"], bs__]] := process[a] * process["mul"[bs]]; +process["mul"[cs___, a_, "mulop"["*"], b_]] := process["mul"[cs,a]] * process[b]; +process["mul"[cs___, a_, "mulop"["/"], b_]] := process["mul"[cs,a]] / process[b]; process["pow"[a_,b_]] := process[a]^process[b]; process["pow"[a_]] := process[a]; |