Skip to content
This repository was archived by the owner on Jan 30, 2023. It is now read-only.

Commit 7b02fb2

Browse files
author
Matthias Koeppe
committed
sage.structure.element.NumberFieldElement: New ABC
1 parent 047281e commit 7b02fb2

File tree

4 files changed

+31
-2
lines changed

4 files changed

+31
-2
lines changed

src/sage/rings/number_field/number_field_element.pxd

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@ from sage.libs.gmp.types cimport mpz_t
33
from sage.rings.integer cimport Integer
44
from sage.rings.polynomial.polynomial_element cimport Polynomial
55
from sage.structure.element cimport FieldElement, RingElement, ModuleElement
6+
from sage.structure.element cimport NumberFieldElement as NumberFieldElement_base
67
from sage.structure.parent cimport Parent
78
from sage.structure.parent_base cimport ParentWithBase
89
from sage.libs.ntl.types cimport ZZ_c, ZZX_c
910
from sage.libs.ntl.ntl_ZZX cimport ntl_ZZX
1011
from sage.libs.ntl.ntl_ZZ cimport ntl_ZZ
1112

12-
cdef class NumberFieldElement(FieldElement):
13+
14+
cdef class NumberFieldElement(NumberFieldElement_base):
1315
cdef ZZX_c __numerator
1416
cdef ZZ_c __denominator
1517
# Pointers to the defining polynomial (with numerator) for the field.

src/sage/rings/number_field/number_field_element.pyx

+1-1
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ def _inverse_mod_generic(elt, I):
190190
return I.small_residue(y)
191191

192192

193-
cdef class NumberFieldElement(FieldElement):
193+
cdef class NumberFieldElement(NumberFieldElement_base):
194194
"""
195195
An element of a number field.
196196

src/sage/structure/element.pxd

+3
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,9 @@ cdef class EuclideanDomainElement(PrincipalIdealDomainElement):
230230
cdef class FieldElement(CommutativeRingElement):
231231
cpdef _floordiv_(self, other)
232232

233+
cdef class NumberFieldElement(FieldElement):
234+
pass
235+
233236
cdef class AlgebraElement(RingElement):
234237
pass
235238

src/sage/structure/element.pyx

+24
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ abstract base classes.
4646
PrincipalIdealDomainElement
4747
EuclideanDomainElement
4848
FieldElement
49+
NumberFieldElement
4950
CommutativeAlgebraElement
5051
Expression
5152
AlgebraElement
@@ -4263,6 +4264,29 @@ cdef class FieldElement(CommutativeRingElement):
42634264
other = self.parent()(other)
42644265
return bool(self) or other.is_zero()
42654266

4267+
4268+
cdef class NumberFieldElement(FieldElement):
4269+
r"""
4270+
Abstract base class for :class:`~sage.rings.number_field.number_field_element.NumberFieldElement`
4271+
4272+
This class is defined for the purpose of :func:`isinstance` tests. It should not be
4273+
instantiated.
4274+
4275+
EXAMPLES::
4276+
4277+
sage: sage: k.<a> = NumberField(x^3 + x + 1)
4278+
sage: isinstance(a, sage.structure.element.NumberFieldElement)
4279+
True
4280+
4281+
By design, there is a unique direct subclass::
4282+
4283+
sage: len(sage.structure.element.NumberFieldElement.__subclasses__()) <= 1
4284+
True
4285+
"""
4286+
4287+
pass
4288+
4289+
42664290
def is_AlgebraElement(x):
42674291
"""
42684292
Return ``True`` if x is of type AlgebraElement.

0 commit comments

Comments
 (0)