> I've just hit an unexpected behavior of the ex.ldegree() method in my
> application. The problem is that ldegree() gives 0 before and 1 (the
> expected value) after calling expand() on the expression. I did not
> expect this, as the tutorial says that degree() and ldegree() "work
> reliably on non-expanded input polynomials".
The tutorial is misleading. The only reason why one could claim that [l]degree()
"works reliably" with non-expanded inputs is that the program won't crash.
Proof: try this in ginsh:
ldegree(x*(x^2-1) - x^2*(x - 1), x)
The code [1] does not expect different terms to cancel each other, hence the problem
[1] https://www.ginac.de/ginac.git/?p=ginac.git;a=blob;f=ginac/add.cpp;h=25de6cd2e889555f52aeccae2b263c4ccc2f74a5;hb=refs/heads/master#l279
> A small running example and its output are attached. The expression is
> the one I encountered in my application. This looks like a bug to me, or
> is it necessary to call expand() before using ldegree()?
One should expand the expression before using degree(), ldegree(), coeff()
Best regards,
Alexey