我正在構建一個用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。感謝您的幫助。