Here are some of the changes:
Bug Fixes
Added a generic infinite optimization chain guard and removed a conflicting rule that
would result in such a bug.
Possibly Breaking
Now has a get number method.
The sum command will be reimplemented to represent a different concept and has been replaced with the total
command.
Simplifications
cos(x)/sin(x) -> cot(x)
sin(x)/cos(x) -> tan(x)
[f(x) * cos(x)]/sin(x) -> f(x) * cot(x)
f(x)/sec(g(x)) -> f(x)cos(g(x))
f(x)/csc(g(x)) -> f(x)sin(g(x))
f(x)/cot(g(x)) -> f(x)tan(g(x))
f(x)/cos(g(x)) -> f(x)sec(g(x))
f(x)/sin(g(x)) -> f(x)csc(g(x))
f(x)/tan(g(x)) -> f(x)cot(g(x))
cos(-f(x)) -> cos(f(x))
sec(-f(x)) -> sec(f(x))
sin(-f(x)) -> -1 * sin(f(x))
tan(-f(x)) -> -1 * tan(f(x))
csc(-f(x)) -> -1 * csc(f(x))
cot(-f(x)) -> -1 * cot(f(x))
(c * f(x))/c -> f(x) where c is not 0
[f(x)/g(x)]/ h(x) -> [f(x)/g(x)]/[h(x)/1] - > f(x)/[g(x) * h(x)]
f(x)/g(x) - h(x)/g(x) -> [f(x) - h(x)]/g(x)
f(x) - (-1 * g(x)) -> f(x) + g(x)
f(x) - (-c) -> f(x) + c
-f(x) + g(x) -> g(x) - f(x)
-1[f(x) - g(x)] -> -f(x) + g(x) -> g(x) - f(x)
cos(x)/(f(x) * sin(x)) -> cot(x)/f(x)
We have added the ability for users to see how a derivation works in depth.
Added a solve
command that is a WIP
.
Misc
Added the ability for derivative
to be called multiple times in one call
The toPostFix, simplify, and derive methods no longer depends on recursion.
Laid the groundwork for a better normalization and compressing system.
Removed unnecessary clones which should result in a slight performance increase.
Added restrictions to some simplifications to avoid messing with domains of functions.
Misc performance improvements.
Added a flag Implicit Multiplication Priority
which determines if 1/2x is
grouped as 1/(2x) when on and (1/2)x when off.