我正在构建一个用C++编写的应用程序,它涉及代数。我决定将GiNaC用于计算机代数系统(CAS),它工作正常;但是有一个小问题。元素的顺序不是我希望它们输出的方式。让我举个例子。这是我的C++代码:GiNaC输出的顺序
这一计划的#include <iostream>
#include <ginac/ginac.h>
int main()
{
using namespace GiNaC;
symbol x("x");
ex poly((x^2)+3*x+5);
std::cout << poly;
}
输出是:
5+x^2+3*x
好吧,我发现这是不恒定,输出也可以是:
5+3*x+x^2
虽然,都是数学上正确的我想要的形式(或者我需要:-)既不是他们。我想多项式开始与最大的程度,也就是我的输出应该是:
x^2+3*x+5
这个问题是当我们添加符号数,paranthesis或更复杂的代数表达式(它有时甚至写(甚至更糟-3+ a)x看起来非常难看:-) std::cout<<GiNaC::latex
不能解决问题。而在我看来,最令人讨厌的部分是输出的反常行为。
在GiNaC中是可能的。我也不想有一个非常乱的代码(因为C++ 0x <regex>
库可以很容易地做到这一点,但我宁愿不涉及正则表达式,我的代码也足够复杂)
我使用GCC 4.7.2 Ubuntu Quantal Quetzal。感谢您的帮助。