Base class of number fields#

AUTHORS:

  • William Stein (2007-09-04): initial version

class sage.rings.number_field.number_field_base.NumberField#

Bases: Field

Base class for all number fields.

OK(*args, **kwds)#

Synonym for maximal_order().

EXAMPLES:

sage: x = polygen(ZZ)
sage: NumberField(x^3 - 2,'a').OK()
Maximal Order generated by a in Number Field in a with defining polynomial x^3 - 2
bach_bound()#

Return the Bach bound associated to this number field.

Assuming the General Riemann Hypothesis, this is a bound \(B\) so that every integral ideal is equivalent modulo principal fractional ideals to an integral ideal of norm at most \(B\).

OUTPUT:

symbolic expression or the Integer 1

EXAMPLES:

We compute both the Minkowski and Bach bounds for a quadratic field, where the Minkowski bound is much better:

sage: # needs sage.symbolic
sage: K = QQ[sqrt(5)]
sage: K.minkowski_bound()
1/2*sqrt(5)
sage: K.minkowski_bound().n()
1.11803398874989
sage: K.bach_bound()
12*log(5)^2
sage: K.bach_bound().n()
31.0834847277628

We compute both the Minkowski and Bach bounds for a bigger degree field, where the Bach bound is much better:

sage: # needs sage.symbolic
sage: K = CyclotomicField(37)
sage: K.minkowski_bound().n()
7.50857335698544e14
sage: K.bach_bound().n()
191669.304126267

The bound of course also works for the rational numbers:

sage: QQ.bach_bound()                                                       # needs sage.symbolic
1
degree()#

Return the degree of this number field.

EXAMPLES:

sage: x = polygen(ZZ)
sage: NumberField(x^3 + 9, 'a').degree()
3
discriminant()#

Return the discriminant of this number field.

EXAMPLES:

sage: x = polygen(ZZ)
sage: NumberField(x^3 + 9, 'a').discriminant()
-243
is_absolute()#

Return True if self is viewed as a single extension over \(\QQ\).

EXAMPLES:

sage: x = polygen(ZZ)
sage: K.<a> = NumberField(x^3 + 2)
sage: K.is_absolute()
True
sage: y = polygen(K)
sage: L.<b> = NumberField(y^2 + 1)
sage: L.is_absolute()
False
sage: QQ.is_absolute()
True
maximal_order()#

Return the maximal order, i.e., the ring of integers of this number field.

EXAMPLES:

sage: x = polygen(ZZ)
sage: NumberField(x^3 - 2,'b').maximal_order()
Maximal Order generated by b in Number Field in b with defining polynomial x^3 - 2
minkowski_bound()#

Return the Minkowski bound associated to this number field.

This is a bound \(B\) so that every integral ideal is equivalent modulo principal fractional ideals to an integral ideal of norm at most \(B\).

See also

bach_bound()

OUTPUT:

symbolic expression or Rational

EXAMPLES:

The Minkowski bound for \(\QQ[i]\) tells us that the class number is 1:

sage: # needs sage.symbolic
sage: K = QQ[I]
sage: B = K.minkowski_bound(); B
4/pi
sage: B.n()
1.27323954473516

We compute the Minkowski bound for \(\QQ[\sqrt[3]{2}]\):

sage: # needs sage.symbolic
sage: K = QQ[2^(1/3)]
sage: B = K.minkowski_bound(); B
16/3*sqrt(3)/pi
sage: B.n()
2.94042077558289
sage: int(B)
2

We compute the Minkowski bound for \(\QQ[\sqrt{10}]\), which has class number 2:

sage: # needs sage.symbolic
sage: K = QQ[sqrt(10)]
sage: B = K.minkowski_bound(); B
sqrt(10)
sage: int(B)
3
sage: K.class_number()
2

We compute the Minkowski bound for \(\QQ[\sqrt{2}+\sqrt{3}]\):

sage: # needs sage.symbolic
sage: x = polygen(ZZ)
sage: K.<y,z> = NumberField([x^2 - 2, x^2 - 3])
sage: L.<w> = QQ[sqrt(2) + sqrt(3)]
sage: B = K.minkowski_bound(); B
9/2
sage: int(B)
4
sage: B == L.minkowski_bound()
True
sage: K.class_number()
1

The bound of course also works for the rational numbers:

sage: QQ.minkowski_bound()
1
ring_of_integers(*args, **kwds)#

Synonym for maximal_order().

EXAMPLES:

sage: x = polygen(ZZ)
sage: K.<a> = NumberField(x^2 + 1)
sage: K.ring_of_integers()
Gaussian Integers generated by a in Number Field in a with defining polynomial x^2 + 1
signature()#

Return \((r_1, r_2)\), where \(r_1\) and \(r_2\) are the number of real embeddings and pairs of complex embeddings of this field, respectively.

EXAMPLES:

sage: x = polygen(ZZ)
sage: NumberField(x^3 - 2, 'a').signature()
(1, 1)
sage.rings.number_field.number_field_base.is_NumberField(x)#

Return True if x is of number field type.

This function is deprecated.

EXAMPLES:

sage: from sage.rings.number_field.number_field_base import is_NumberField
sage: x = polygen(ZZ)
sage: is_NumberField(NumberField(x^2 + 1, 'a'))
doctest:...: DeprecationWarning: the function is_NumberField is deprecated; use
isinstance(x, sage.rings.number_field.number_field_base.NumberField) instead
See https://github.com/sagemath/sage/issues/35283 for details.
True
sage: is_NumberField(QuadraticField(-97, 'theta'))
True
sage: is_NumberField(CyclotomicField(97))
True

Note that the rational numbers QQ are a number field.:

sage: is_NumberField(QQ)
True
sage: is_NumberField(ZZ)
False