Math::Algebra::Symbols is a (to me) new way to deal with symbolic math in Perl. I did myself spend a considerable amount of time thinking about the subject (the result of which is represented by the Math::Symbolic module) and really liked the more transparent interface of Math::Algebra::Symbols. However, I think it may become limited by the number of overloadable operators and contexts in the future and increasingly convolute the callers namespace.
Since the two aforementioned modules cover much of the same ground, it's probably a good idea to compare them. Math::Symbolic is a much more abstracted attempt at a computer algebra system and thus has a much steeper learning curve. To get started with Philip's module, all you need to know is how to construct a Math::Algebra::Symbols object and most of the rest is done by the overloaded interface. The preferred method of constructing a Math::Symbolic tree/expression is, in contrast, to use its parser. Since Math::Symbolic tries to adhere to object-orientedness as much as possible, Math::Algebra::Symbols is faster for symbolic transformations, but lacks an option to translate a symbolic expression to a fast Perl subroutine or even inlined C for doing many evaluations of the algebraically transformed expression with different variable bindings as required by, for example, a function plotter. Since its normal use is much closer to ordinary calculations in Perl, Math::Algebra::Symbols is also better at cooperating with other mathematical modules like Math::Complex or Math::BigInt. (It's possible to use those modules in conjunction with Math::Symbolic, but more complicated. Please refer to the distribution's examples.)
I really like Math::Algebra::Symbols and will try to work with the author for the benefit of both symbolic math packages.
Was this review helpful to you? Yes No