私はC++で書かれたアプリケーションを構築していますが、これには代数が多く含まれています。数式処理システム(CAS)にGiNaCを使用することにしました。これは完全に機能しています。ただし、少し問題があります。要素の順序は、出力に含める方法ではありません。例を挙げましょう。これは私のC++コードです:
#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
この問題は、符号付き数値、パランセシス、またはより複雑な代数式を追加するとさらに悪化します(非常に醜いように見える(-3 + a)xと書くことさえあります:-) std::cout<<GiNaC::latex
。そして、私の見解では、最も厄介な部分は、出力の不安定な動作です。
GiNaCで可能なことのようなものです。また、本当に厄介なコードは必要ありません(C ++ 0x<regex>
ライブラリはこれを簡単に実行できるためですが、正規表現を使用したくないため、コードは十分に複雑です)
UbuntuQuantalQuetzalでGCC4.7.2を使用しています。ご協力ありがとうございました。