I have a planned project that will need to manipulate symbolic expressions like:
a * b = c^2 + sin(d)
I'm wondering what libs are out there for this kind of thing.
Two that I found a while ago are openaxiom and FriCAS. neither of these seem like a good fit. An ideal lib would be a light as possible. At a minimum it must be able to define expressions as some type of data structure and, once values are assigned to the variables, evaluate expressions. I would prefer that it have as many of the following as possible:
- tools to transform expressions and ensure that the transformations are algebraically valid.
- tools to perform differentiation
- tools to parse expressions from text
- have some form of re-wright rule engine
- be able to "compile" expressions for fast execution
- emit C code that equates to execution
- emit ASM for the same
C linkage is a major boon but C++ would do, other options (C#,lisp) might work but are way less desirable