Dear Alexei, Alexei Sheplyakov wrote:
2. (a consequence of 1) No bugs like this:
ex e1, e2; // do some calculation if (e1 == e2) { // gotcha: this is always true. // do something }
Well, over here I get: $ cat relationaltest.cc #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; int main() { symbol x("x"); ex e1, e2; // do some calculation e1 = series(tgamma(x),x==0,3).op(3); e2 = series(log(x),x==1,6).op(4); cout << e1 << endl; cout << e2 << endl; if (e1 == e2) { // gotcha: what happens? cout << "e1 and e2 appear to be equal." << endl; } else { cout << "e1 and e2 appear to differ." << endl; } } $ g++ -O relationaltest.cc -lginac $ ./a.out -1/12*x^2*(2*Euler^3+Euler*Pi^2+4*zeta(3)) 1/5*(-1+x)^5 e1 and e2 appear to differ. What is your point? Best wishes -richy. -- Richard B. Kreckel <http://www.ginac.de/~kreckel/>