Paul van Wamelen on Sun, 21 Feb 99 15:32:00 -0600

 idealval bug?

```Dear Pari Developers,

I believe the following reveals a bug in 2.0.13:

Do:
bnf = nfinit(polcyclo(3));
PPs = idealprimedec(bnf,883);
P = PPs[1]; /* [883, [-337, 1]~, 1, 1, [338, 1]~] */
a = Mod(-540*(x-1),bnf.pol);
d = a^((883-1)/2);
then both
idealval(bnf,d-Mod(1,bnf.pol),P)
and
idealval(bnf,d-Mod(-1,bnf.pol),P)
give 0. One (and only one) should be > 0, because either a is a square
mod P or not.

Doing
PPs = idealprimedec(bnf,751);
a = Mod(-216*(x-1),bnf.pol);
also give two 0 idealvals. Many other examples work fine.

This occurs in
GP/PARI CALCULATOR Version 2.0.13 (alpha)
Sparc running nextstep (C portable kernel) 32-bit version
and
GP/PARI CALCULATOR Version 2.0.13 (alpha)
UltraSparc (MicroSparc kernel) 32-bit version

but not in 2.0.9 or 2.0.11 (where idealval(bnf,d-Mod(-1,bnf.pol),P)
gives 1 in the first example). Also in these older versions PPs[1] and
PPs[2] are reversed so in fact P should be PPs[2].

By the way, the more intelligent:
bnf = nfinit(polcyclo(3));
PPs = idealprimedec(bnf,883);
P = PPs[1];
a = Mod(-540*(x-1),bnf.pol);
d = lift(lift((Mod(1,883)*a)^((883-1)/2)));
d = Mod(d,bnf.pol);
does work:
idealval(bnf,d-Mod(-1,bnf.pol),P)
gives 1 and
idealval(bnf,d-Mod(1,bnf.pol),P)
gives 0.

Keep up the good work!
Paul van Wamelen.
```