Now seriously: what is a polynomial?

Richard B. Kreckel kreckel at thep.physik.uni-mainz.de
Sun Oct 13 14:07:57 CEST 2002


On Wed, 9 Oct 2002, Christian Bauer wrote:
[...]
> > e = sqrt(2)*x
> > e.info(info_flags::polynomial) == false
>
> That's a case where the GiNaC definition of a polynomial clashes with the
> "intuitive" one. info() should probably return 'true' here, because sqrt(2)
> is clearly a number. But so is zeta(3), and I'm not sure how to handle
> this in a way that is general enough.

I don't see a difference between sqrt(2) and zeta(3) apart from the
irrelevant fact that zeta(3) is transcendental while sqrt(2) is just
irrational.  The point here was that Z[x,y,z,...] and Q[x,y,z,...] ought
to be classified as polynomials while more general fields are something
different.  This is so because as soon as you start nesting roots it is
not at all obvious how to obtain a canonical form -- definitely
"expanding" is not enough.  For more general functions (like zeta(2*n+1))
it becomes even less obvious.

I'm not entirely sure but methinks a valid definition would be this one:

    A polynomial is an object that has a unique canonical form such that
    given two such objects their equality is guaranteed to be
    unambigously determined using `expand' on both objects.

I think this is what I was having in mind when I implemented
info(info_flags::polynomial) long ago.  Does this make sense?

Regards
    -richy.
-- 
Richard B. Kreckel
<Richard.Kreckel at GiNaC.DE>
<http://www.ginac.de/~kreckel/>




More information about the GiNaC-list mailing list