Skip to content

Elements

Elements in orders have two representations: they can be viewed as elements in the giving the coefficients wrt to the order basis where they are elements in. On the other hand, as every order is in a field, they also have a representation as number field elements. Since, asymptotically, operations are more efficient in the field (due to fast polynomial arithmetic) than in the order, the primary representation is that as a field element.

Creation

Elements are constructed either as linear combinations of basis elements or via explicit coercion. Elements will be of type AbsNumFieldOrderElem, the type if actually parametrized by the type of the surrounding field and the type of the field elements. E.g. the type of any element in any order of an absolute simple field will be AbsSimpleNumFieldOrderElem

# AbsNumFieldOrderType.

  (O::NumFieldOrder)(a::NumFieldElem, check::Bool = true) -> NumFieldOrderElem

Given an element of the ambient number field of , this function coerces the element into . It will be checked that is contained in if and only if check is true.

source

  (O::NumFieldOrder)(a::NumFieldOrderElem, check::Bool = true) -> NumFieldOrderElem

Given an element of some order in the ambient number field of , this function coerces the element into . It will be checked that is contained in if and only if check is true.

source

  (O::NumFieldOrder)(a::IntegerUnion) -> NumFieldOrderElem

Given an element of type ZZRingElem or Integer, this function coerces the element into .

source

  (O::AbsNumFieldOrder)(arr::Vector{ZZRingElem})

Returns the element of with coefficient vector arr.

source

  (O::AbsNumFieldOrder)(arr::Vector{Integer})

Returns the element of with coefficient vector arr.

source

Basic properties

# parentMethod.

parent(a::NumFieldOrderElem) -> NumFieldOrder

Returns the order of which is an element.

source

# elem_in_nfMethod.

elem_in_nf(a::NumFieldOrderElem) -> NumFieldElem

Returns the element considered as an element of the ambient number field.

source

# coordinatesMethod.

coordinates(a::AbsNumFieldOrderElem) -> Vector{ZZRingElem}

Returns the coefficient vector of with respect to the basis of the order.

source

# discriminantMethod.

discriminant(B::Vector{NumFieldOrderElem})

Returns the discriminant of the family of algebraic numbers, i.e. .

source

discriminant(E::EllipticCurve) -> FieldElem

Return the discriminant of .

source

discriminant(C::HypellCrv{T}) -> T

Compute the discriminant of .

source

discriminant(O::AlgssRelOrd)

Returns the discriminant of .

source

# ==Method.

==(x::NumFieldOrderElem, y::NumFieldOrderElem) -> Bool

Returns whether and are equal.

source

Arithmetic

All the usual arithmetic operatinos are defined:

  • -(::NUmFieldOrdElem)
  • +(::NumFieldOrderElem, ::NumFieldOrderElem)
  • -(::NumFieldOrderElem, ::NumFieldOrderElem)
  • *(::NumFieldOrderElem, ::NumFieldOrderElem)
  • ^(::NumFieldOrderElem, ::Int)
  • mod(::AbsNumFieldOrderElem, ::Int)
  • mod_sym(::NumFieldOrderElem, ::ZZRingElem)
  • powermod(::AbsNumFieldOrderElem, ::ZZRingElem, ::Int)

Miscellaneous

# representation_matrixMethod.

representation_matrix(a::AbsNumFieldOrderElem) -> ZZMatrix

Returns the representation matrix of the element .

source

# representation_matrixMethod.

representation_matrix(a::AbsNumFieldOrderElem, K::AbsSimpleNumField) -> FakeFmpqMat

Returns the representation matrix of the element considered as an element of the ambient number field . It is assumed that is the ambient number field of the order of .

source

# trMethod.

tr(a::NumFieldOrderElem)

Returns the trace of as an element of the base ring.

source

# normMethod.

norm(a::NumFieldOrderElem)

Returns the norm of as an element in the base ring.

source

# absolute_normMethod.

absolute_norm(a::NumFieldOrderElem) -> ZZRingElem

Return the absolute norm as an integer.

source

# absolute_trMethod.

absolute_tr(a::NumFieldOrderElem) -> ZZRingElem

Return the absolute trace as an integer.

source

# randMethod.

rand(O::AbsSimpleNumFieldOrder, n::IntegerUnion) -> AbsNumFieldOrderElem

Computes a coefficient vector with entries uniformly distributed in and returns the corresponding element of the order .

source

# minkowski_mapMethod.

minkowski_map(a::NumFieldOrderElem, abs_tol::Int) -> Vector{ArbFieldElem}

Returns the image of under the Minkowski embedding. Every entry of the array returned is of type ArbFieldElem with radius less then 2^-abs_tol.

source

# conjugates_arbMethod.

conjugates_arb(x::NumFieldOrderElem, abs_tol::Int) -> Vector{AcbFieldElem}

Compute the conjugates of as elements of type AcbFieldElem. Recall that we order the complex conjugates such that for .

Every entry of the array returned satisfies radius(real(y)) < 2^-abs_tol, radius(imag(y)) < 2^-abs_tol respectively.

source

# conjugates_arb_logMethod.

conjugates_arb_log(x::NumFieldOrderElem, abs_tol::Int) -> Vector{ArbFieldElem}

Returns the elements as elements of type ArbFieldElem radius less then 2^-abs_tol.

source

# t2Method.

t2(x::NumFieldOrderElem, abs_tol::Int = 32) -> ArbFieldElem

Return the -norm of . The radius of the result will be less than 2^-abs_tol.

source

# minpolyMethod.

minpoly(a::AbsNumFieldOrderElem) -> ZZPolyRingElem

The minimal polynomial of .

source

# charpolyMethod.

charpoly(a::AbsNumFieldOrderElem) -> ZZPolyRingElem
charpoly(a::AbsNumFieldOrderElem, FlintZZ) -> ZZPolyRingElem

The characteristic polynomial of .

source

# factorMethod.

factor(a::AbsSimpleNumFieldOrderElem) -> Fac{AbsSimpleNumFieldOrderElem}

Computes a factorization of into irreducible elements. The return value is a factorization fac, which satisfies a = unit(fac) * prod(p^e for (p, e) in fac).

The function requires that is non-zero and that all prime ideals containing are principal, which is for example satisfied if class group of the order of is trivial.

source

# denominatorMethod.

denominator(a::NumFieldElem, O::AbsSimpleNumFieldOrder) -> ZZRingElem

Returns the smallest positive integer such that is contained in .

source

# discriminantMethod.

discriminant(B::Vector{NumFieldOrderElem})

Returns the discriminant of the family of algebraic numbers, i.e. .

source

discriminant(E::EllipticCurve) -> FieldElem

Return the discriminant of .

source

discriminant(C::HypellCrv{T}) -> T

Compute the discriminant of .

source

discriminant(O::AlgssRelOrd)

Returns the discriminant of .

source