[Fwd: Re: Now seriously: what is a polynomial?]

-------- Original Message -------- Subject: Re: Now seriously: what is a polynomial? Date: Sun, 13 Oct 2002 14:07:57 +0200 (CEST) From: Richard B. Kreckel kreckel@zino.physik.uni-mainz.de Reply-To: ginac-list@zino.physik.uni-mainz.de To: ginac-list@zino.physik.uni-mainz.de
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.
participants (1)
-
Roberto Bagnara