Greetings, I am new to GiNac. I was trying to use the degree function, but I got a weird result. My initial expression is -4*(-3+x)*(-1+x)+9/2*(-2+x)*(-1+x)+1/2*(-2+x)*(-3+x) After the "expand" function call, it returns 9/2*x^2-5/2*x-4*x^2+16*x-27/2*x+1/2*x^2 My goal is to add/subtract the coefficient of equal degree terms. I could not find any function for that. ( if it is already there, please point me) I wanted to write a function to achieve it. To do so. I am taking each term and try to see if for (size_t i = 0; i != poly.nops(); ++i) { // Here poly is polynomial as above ex subExpres=poly.op(i); // I get individual terms cout << "is polynomial="<< is_polynomial(subExpres,symb) <<endl; // GiNaC::ex pow2=pow(symb,2); cout << subExpres<< " degree=" << subExpres.degree(symb) << endl; } It determines the subexpression as a polynomial but can not determine the degree. E.g is polynomial=1 9/2*x^2 degree=0 // Here degree returned is wrong. Your thoughts will be appreciated. Regards, Santos