我需要一个 C++ 代数库才能在我的项目中使用。一开始我以为我可以写一个,但后来我意识到我试图重新发明轮子并没有成功,浪费了我宝贵的时间。
对于算术问题,我找到了 GMP 库(你知道,用于无限算术计算)和用于其他类型任务的工具(标准 C++ 库似乎足以生成伪随机数)。但是,我找不到适合代数作品的。
有线性代数库(例如 Armadillo),但我不确定我是否需要这样的库。我想总结一下我的需求。
#include <string>
#include <somelibrary.h>
int main(){
std::string str = "3*x^3+2*x^2+x+sqrt(x)*x^(1/3)";
algebraic_expression* exp = new algebraic_expression(str);
}
我想从这样的表达中得到一棵树。可以说它将返回带有一些信息的 std::vector 或 C 样式数组。例如(考虑上面的例子)exp[0] 将是 "3*x^3",或者可能是 exp[0]["base"]="x"。
为什么我需要这个?实际上我可以通过使用 RegEx 来做类似的事情,但有时我无法处理它,例如 3*x^0 只是 3,我不能打印 3*x^0 因为它没有意义我想要 3(就像3*x^1 是 3*x)。或者 (3-3)*5*2 将返回 0,等等...
谢谢您的帮助。