[back] [prev] [next] [index] [root]
EltIdealReduce
Returns a canonical representative modulo an ideal.
Syntax:
b := EltIdealReduce(a,I); same as b := EltIdealReduce(a,I,HNF);
b := EltIdealReduce(a,I,LLL);
b := EltIdealReduce(a,I,INTEGRAL);
b := EltIdealReduce(a,I,HNF_POS);
b := EltIdealReduce(a,I,INTEGRAL_POS);
algebraic element |
b |
|
algebraic element |
a |
|
Ideal |
I |
|
interpreted as strings |
HNF, LLL, INTEGRAL, HNF_POS, INTEGRAL_POS |
|
Description:
This function returns a representation of
a \; \mod \; I using either the usual ideal base, a
LLL-reduced basis or yet another basis.
LLL-reducing results in smaller elements in terms of the norm
of the element but takes longer -- firstly to compute another
basis of the ideal (which is then stored for this ideal) and
secondly to compute the representative is more difficult.
The INTEGRAL method computes the integral minimum of the ideal and
reduces every coefficient of the algebraic number modulo this number.
This is much faster than the other methods if the minimum is already
computed which is true if the usual HNF reduced basis is computed
(HNF and minimum computations are largely identical).
The coefficients have the smallest possible absolute value.
The INTEGRAL_POS and HNF_POS methods reduce in the same way as
INTEGRAL and HNF, but the coefficients of the returned element
are positive.
A fractional ideal is treated as follows: the element \alpha
is reduced to \beta with the ideal frac{\a}{n} if the
element n \alpha is reduced to n \beta with \a.
A fractional elements is treated as follows: the element frac{\alpha}{n}
is reduced to frac{\beta}{n} with the ideal \a if the
element \alpha is reduced to \beta with n \a.
There is a different generalization to fractional elements
where the denominator (as a principal ideal) is inverted in
the factor ring.
This function can only handle Z-orders.
Example:
kash> o := OrderMaximal(Order(Z,6,2));
Generating polynomial: x^6 - 2
Discriminant: 1492992
kash> I := 2*o;
<2>
kash> elt := Elt(o,[214124,2144,3245,3252354545,436436436436,564643544365]);
[214124, 2144, 3245, 3252354545, 436436436436, 564643544365]
kash> b := EltIdealReduce(elt,I);
> [0, 0, 1, 1, 0, 1]
<- back[back] [prev] [next] [index] [root]