diff options
| author | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-06-14 16:41:52 -0500 |
|---|---|---|
| committer | Collin Williams <96917990+bluedragon1221@users.noreply.github.com> | 2026-06-14 16:41:52 -0500 |
| commit | 3a03bdd7e7a2dbe1d83c33f5fbe8e94d6bac9f71 (patch) | |
| tree | e814112f8ed166eddfca24426649ad48906d9339 /base.rules | |
| parent | e9469f6e7c4ff04cdc939030c5af4c1516a0271b (diff) | |
Diffstat (limited to 'base.rules')
| -rw-r--r-- | base.rules | 35 |
1 files changed, 32 insertions, 3 deletions
@@ -1,5 +1,34 @@ +("Trivial Base Cases") (def-rule (+ @a) @a) (def-rule (* @a) @a) -(def-rule (+ @a @a .) (+ (* 2 @a) .)) -(def-rule (+ @a (* $i @a) .) (+ (* (+ $i 1) @a) .)) -(def-rule (+ (* $i @a) (* $j @a) .) (+ (* (+ $i $j) @a) .)) +(def-rule (+ 0 ..v) (+ ..v)) +(def-rule (* 1 ..v) (* ..v)) +(def-rule (* 0 ..v) 0) + +("Flatten argument lists") +(def-rule (+ (+ ..a) ..b) (+ ..a ..b)) +(def-rule (* (* ..a) ..b) (* ..a ..b)) + +("Pull out constant subexpressions") +(def-rule (+ $i $j ..a) (+ (+ $i $j) ..a)) +(def-rule (* $i $j ..a) (* (* $i $j) ..a)) + +("Algebraic simplifications") +(def-rule (+ @a (* $i @a) ..v) (+ (* (+ $i 1) @a) ..v)) +(def-rule (+ (* $i @a) (* $j @a) ..v) (+ (* (+ $i $j) @a) ..v)) +(def-rule (+ @a @a ..v) (+ (* 2 @a) ..v)) + +("Derivatives") +(def-rule (d/dx $i) 0) +(def-rule (d/dx x) 1) + +(def-rule (d/dx (sin @a)) (* (cos @a) (d/dx @a))) +(def-rule (d/dx (cos @a)) (* -1 (sin @a) (d/dx @a))) +(def-rule (d/dx (* -1 (sin @a))) (* -1 (cos @a) (d/dx @a))) +(def-rule (d/dx (* -1 (cos @a))) (* (sin x) (d/dx @a))) + +(def-rule (d/dx (* $i @a ..v)) (* $i (d/dx (* @a ..v)))) +(def-rule (d/dx (+ @a @b ..v)) (+ (d/dx @a) (d/dx @b) (d/dx (+ ..v)))) +(def-rule (d/dx (+ @a ..v)) (+ (d/dx @a) (d/dx (+ ..v)))) +(def-rule (d/dx (* @a @b)) (+ (* @a (d/dx @b)) (* @b (d/dx @a)))) +(def-rule (d/dx (* @a @b @c)) (+ (* (d/dx @a) @b @c) (* @a (d/dx @b) @c) (* @a @b (d/dx @c)))) |
