Internals

Types of number fields

Number fields, in Hecke, come in several different types:

  • AbsSimpleNumField: a finite simple extension of the rational numbers $\mathbf{Q}$
  • AbsNonSimpleNumField: a finite extension of $\mathbf{Q}$ given by several polynomials. We will refer to this as a non-simple field - even though mathematically we can find a primitive elements.
  • RelSimpleNumField: a finite simple extension of a number field. This is actually parametried by the (element) type of the coefficient field. The complete type of an extension of an absolute field (AbsSimpleNumField) is RelSimpleNumField{AbsSimpleNumFieldElem}. The next extension thus will be RelSimpleNumField{RelSimpleNumFieldElem{AbsSimpleNumFieldElem}}.
  • RelNonSimpleNumField: extensions of number fields given by several polynomials. This too will be referred to as a non-simple field.

The simple types AbsSimpleNumField and RelSimpleNumField are also called simple fields in the rest of this document, RelSimpleNumField and RelNonSimpleNumField are referred to as relative extensions while AbsSimpleNumField and AbsNonSimpleNumField are called absolute.

Internally, simple fields are essentially just (univariate) polynomial quotients in a dense representation, while non-simple fields are multivariate quotient rings, thus have a sparse presentation. In general, simple fields allow much faster arithmetic, while the non-simple fields give easy access to large degree fields.

Absolute simple fields

The most basic number field type is that of AbsSimpleNumField. Internally this is essentially represented as a unvariate quotient with the arithmetic provided by the C-library antic with the binding provided by Nemo.