Hello! Sometimes running normal() takes *really* long time. I've attached an example, at first glance it looks horrible, but in fact the expression equals zero. The root of the problem seems to be that gcd(e1, e2, &ca, &cb) returns cb in expanded form, as in: #include <iostream> #include <ginac/ginac.h> using namespace std; using namespace GiNaC; int main(int argc, char** argv) { symbol m1("m1"); symbol m2("m2"); symbol x("x"); ex e1 = pow(x,2)*pow(m1,2) - pow(x,2)*pow(m2,2); ex e2 = pow(pow(x,2)*pow(m1,2)-pow(x,2)*pow(m2,2),100); ex ca, cb, gc; gc = gcd(e1, e2, &ca, &cb, false); cout << c2 << endl; // this won't be just x^198*(m1^2-m2^2)^99. // (m1^2-m2^2)^99 gets expanded. cout << (e1/e2).normal() << endl; // won't print just x^(-198)*(m1^2-m2^2)^(-99), // (m1^2-m2^2)^99 gets expanded return 0; } so normal() in fact expands denominators. Is there any way to fix this bug/feature? Thanks in advance, Alexei.