Roots of unity

Richard B. Kreckel kreckel at
Sun Jan 20 18:01:31 CET 2002

On Sun, 20 Jan 2002, Bob McElrath wrote:
> What I see as needed in order to write some simplification routines are methods
> for the ex class like there are in the numeric class:
>     is_real, is_integer, operator<, etc...
> And an assume() functionality to create symbols that are reals, integers, etc.

The reason this has not been done is that we have absolutely no idea how
to make it consistent.

> So that someone who wants to write some kind of simplification routine can do
> so.  I was surprised to find that an expression involving entirely numeric's
> cannot be compared with relational operators (because, in general, an ex cannot
> be compared with relational operators).  That is:
>     > is(-1/2-sqrt(2/9)<0);
>     0
> This is something that should be straightforwardly determinable, if you had an
> is_real and operator< for the ex class.

The sign of -1/2-sqrt(2/9) should be straightforwardly determinable.  But
what keeps you then from trying to determine the sign of nested roots?  I
believe that I read somewhere that algorithms which determine the sign of
a general expression with n roots take time exponential in n, although
sums seem to be easier.  This is still an active field of research.

Richard B. Kreckel
<Richard.Kreckel at Uni-Mainz.DE>

More information about the GiNaC-list mailing list