Creation Functions#

Functions are provided to create fields of the special type FldCyc. Orders and elements created from a field of this type will have the special types RngCyc and FldCycElt respectively and elements created from orders RngCycElt. These functions provide an object with the correct type which will allow the extra functions and efficient implementations to be used.

Creation of Cyclotomic Fields#

Cyclotomic fields can be created from an integer specifying which roots of unity it should contain or from a collection of elements of an existing field or order. Cyclotomic polynomials can also be retrieved independently of the fields and orders.

CyclotomicField(m): RngIntElt -> FldCyc#
Sparse: Boolean                    Default: false

Given a positive integer \(m\), create the field obtained by adjoining the \(m\)-th roots of unity to \({\mathbb{Q}}\). It is possible to assign a name to the primitive \(m\)-th root of unity \(\zeta_{m}\) using angle brackets: R<s> := CyclotomicField(m).

If Sparse := ``true, names for all the generating elements can be assigned.

CyclotomicPolynomial(m): RngIntElt -> RngUPolElt#

Given a positive integer \(m\), create the cyclotomic polynomial of order \(m\). This function is equivalent to DefiningPolynomial(CyclotomicField(m)).

MinimalField(a): FldRatElt -> FldRat#
MinimalField(a): FldCycElt -> FldCyc#
MinimalField(a): RngCycElt -> RngCyc#
MinimalCyclotomicField(a): FldRatElt -> FldRat#
MinimalCyclotomicField(a): FldCycElt -> FldCyc#
MinimalCyclotomicField(a): RngCycElt -> RngCyc#

Given an element \(a\) from a cyclotomic field \(F\) or ring \(R\), this function returns the smallest cyclotomic field or order thereof (possibly the rational field or the ring of integers) \(E\subset F\) containing \(a\).

MinimalField(S): [ FldCycElt ] -> FldCyc#
MinimalField(S): { FldCycElt } -> FldCyc#
MinimalField(S): [ RngCycElt ] -> RngCyc#
MinimalField(S): { RngCycElt } -> RngCyc#
MinimalCyclotomicField(S): [ FldCycElt ] -> FldCyc#
MinimalCyclotomicField(S): Setq -> FldCyc#
MinimalCyclotomicField(S): { FldCycElt } -> FldCyc#
MinimalCyclotomicField(S): [ RngCycElt ] -> RngCyc#
MinimalCyclotomicField(S): { RngCycElt } -> RngCyc#

Given a set or sequence \(S\) of cyclotomic field or ring elements, this function returns the smallest cyclotomic field or ring (possibly the rational field or integers) \(G\) containing each of the elements of \(S\).

Example: creation (ex-644033)#

We will demonstrate the difference between the “dense” and the “sparse” representation on the cyclotomic field of order 100.

> K1 := CyclotomicField(100);
> K2 := CyclotomicField(100: Sparse := true);
> K2!K1.1;
zeta(100)_4*zeta(100)_25^19

Run in calculator

Where zeta(100)_25 indicates a 25th root of unity in a field of order 100.

> K1!K2.1;
zeta_100^25

Run in calculator

Creation of Elements#

For elements of cyclotomic number fields the following conventions are used. Primitive roots of unity \(\zeta_m\) are chosen in such a way that \(\zeta_m^{m/d}=\zeta_d\), for every divisor \(d\) of \(m\); one may think of this as choosing \(\zeta_m={\rm e}^{2\pi{\mathrm{i}}\over m}\) (where the roots of unity are \(\zeta_m^k = {\rm e}^{2k\pi{\mathrm{i}}\over m}\)) in the complex plane for every \(m\) (a convention that is followed for the explicit embedding in the complex domains). Elements of cyclotomic fields and orders can also be created using coercion (!) and the elt constructor (elt<|>) where the left hand side is the field or order the element will lie in. For details about coercion see Section Creation of Elements.

RootOfUnity(n): RngIntElt -> FldCycElt#

Create the \(n\)-th root of unity \(\zeta_n\) in \({\mathbb{Q}}(\zeta_n)\).

RootOfUnity(n, K): RngIntElt, FldCyc -> FldCycElt#

Given a cyclotomic field \(K = {\mathbb{Q}}(\zeta_m)\) and an integer \(n>2\), create the \(n\)-th root of unity \(\zeta_n\) in \(K\). An error results if \(\zeta_n\notin K\), that is, if \(n\) does not divide \(m\) (or \(2m\) in case \(m\) is odd).

Minimise(~a): FldCycElt#
Minimize(~a): FldCycElt#
Minimise(~a): RngCycElt#
Minimize(~a): RngCycElt#

Given an element \(a\) in a cyclotomic field \(F\) or ring \(R\), this procedure finds the minimal cyclotomic subfield \(E\subset F\) or subring \(E \subset F\) containing \(a\), and coerces \(a\) into \(E\). Note that \(E\) may be \({\mathbb{Q}}\) or \({\mathbb{Z}}\).

Minimise(~s): [ FldCycElt ]#
Minimize(~s): [ FldCycElt ]#
Minimise(~s): [ RngCycElt ]#
Minimize(~s): [ RngCycElt ]#

Given a set \(s\) of cyclotomic field or ring elements, this procedure finds the minimal cyclotomic field or ring \(E\) containing all of them, and coerces each element into \(E\). The resulting set will have universe \(E\). Note that \(E\) may be \({\mathbb{Q}}\) or \({\mathbb{Z}}\).

Minimise(a): FldCycElt -> RngElt#
Minimize(a): FldCycElt -> RngElt#
Minimise(a): RngCycElt -> RngElt#
Minimize(a): RngCycElt -> RngElt#

Given an element \(a\) in a cyclotomic field \(F\) or ring \(R\), this function finds the minimal cyclotomic subfield \(E\subset F\) or subring \(E \subset R\) containing \(a\), and coerces \(a\) into \(E\). Note that \(E\) may be \({\mathbb{Q}}\) or \({\mathbb{Z}}\).

Minimise(s): { FldCycElt } -> { RngElt }#
Minimize(s): { FldCycElt } -> { RngElt }#
Minimise(s): { RngCycElt } -> { RngElt }#
Minimize(s): { RngCycElt } -> { RngElt }#

Given a set \(s\) of cyclotomic field or ring elements, this function finds the minimal cyclotomic field \(E\) containing all of them, and coerces each element into \(E\). The resulting set will have universe \(E\). Note that \(E\) may be \({\mathbb{Q}}\) or \({\mathbb{Z}}\).