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.

Contents

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 Q. It is possible to assign a name to the primitive m-th root of unity ζ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⊂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 FldCyc_creation (H38E1)

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
Where zeta(100)_25 indicates a 25th root of unity in a field of order 100.
> K1!K2.1;
zeta_100^25

Creation of Elements

For elements of cyclotomic number fields the following conventions are used. Primitive roots of unity ζm are chosen in such a way that ζmm/dd, for every divisor d of m; one may think of this as choosing ζm=(e)2πi/m (where the roots of unity are ζmk = (e)2kπi/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 ζn in Q(ζn).
RootOfUnity(n, K) : RngIntElt, FldCyc -> FldCycElt
Given a cyclotomic field K = Q(ζm) and an integer n>2, create the n-th root of unity ζn in K. An error results if ζn∉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⊂F or subring E ⊂F containing a, and coerces a into E. Note that E may be Q or 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 Q or 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⊂F or subring E ⊂R containing a, and coerces a into E. Note that E may be Q or 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 Q or Z.
V2.28, 13 July 2023