[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]