Karim BELABAS on Mon, 9 Nov 1998 13:20:22 +0100 (MET)

 Re: idealred returns ideal with different norm

```[Peter-Lawrence Montgomery writes:]
>        idealred is returning an ideal with different norm than its input.
>        Is this the way it is supposed to behave?

I think so. Idealred returns an ideal in the same ideal _class_ as the
input, which gives a much more efficient reduction (since the norm is
usually diminished...). This function is really used to find relations in
the class group, not simply to reduce the size of the ideal components. If
you want to keep the same ideal and just reduce the corresponding lattice,
use the standard qflll* functions.

>From the manual (entry for idealred):
"[...] Note  that  this is not the same as the LLL reduction of the
lattice x since ideal operations are involved. The result is the Hermite
normal form of the LLL-reduced ideal, which is usually, but not always, a
reduced ideal. x may also  be  a 2-component vector, the  first  being as
above,  and the second containing a matrix of Archimedean information. In
that case, this matrix is suitably updated."

This says (in an admittedly very cryptic style) that by using as input what
PARI calls (wrongly) an "idele", i.e 2-component vector containing [the
ideal, a vector with r1+r2 scalar components (embeddings)], the second
component will keep track of the principal ideals that are lost in the main
component (see Henri Cohen's book for details).

Side notes:
> c5 = 200
> fX = c5*X^5 + 102*X^4 + 315*X^3 - 11*X^2 - 262*X + 5
> fXM = subst(fX*c5^4, X, XM/c5)     /* fXM is monic in XM */

fXM = polredabs(fXM) would be a good idea at this point.

> [...]
> ideal2fac = idealfactor(nf, idealprincipal(nf, 2)) /* Factor ideal (2) */

simpler: ideal2fac = idealprimedec(nf, 2) /* Factor ideal (2) */

> [...]
>    The empty factorization prints a cryptic   matrix(0,2,j,k,0).

matrix(0,2,j,k,0) = 0 by 2 matrix filled with 0s (irrelevant since it has
no entries, but syntactically mandatory... this is annoying since omitting
the last field "should" initialize everything with zeroes, I'm changing that)

This is printed so that it can be copy-pasted back to GP and produce a
valid object...

([;] is really an abreviation for matrix(0,0,j,k,0))

Best,

Karim.
--
Karim Belabas                    email: Karim.Belabas@math.u-psud.fr
Dep. de Mathematiques, Bat. 425
Universite Paris-Sud             Tel: (00 33) 1 69 15 57 48
F-91405 Orsay (France)           Fax: (00 33) 1 69 15 60 19
--