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

Commit

Permalink
Merge #34931
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthias Koeppe committed Jan 24, 2023
2 parents 81e875b + 4dfefbf commit 62da507
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 14 deletions.
10 changes: 7 additions & 3 deletions src/sage/interfaces/maxima_lib.py
Original file line number Diff line number Diff line change
Expand Up @@ -1164,6 +1164,8 @@ def reduce_load_MaximaLib():
import sage.rings.real_double
import sage.symbolic.expression
import sage.symbolic.integration.integral

from sage.structure.element import NumberFieldElement
from sage.symbolic.operators import FDerivativeOperator, add_vararg, mul_vararg

car=EclObject("car")
Expand Down Expand Up @@ -1523,9 +1525,11 @@ def pyobject_to_max(obj):
"""
if isinstance(obj,sage.rings.rational.Rational):
return EclObject(obj) if (obj.denom().is_one()) else EclObject([[rat], obj.numer(),obj.denom()])
elif isinstance(obj,sage.rings.number_field.number_field_element_quadratic.NumberFieldElement_quadratic) and obj.parent().defining_polynomial().list() == [1,0,1]:
re, im = obj.list()
return EclObject([[mplus], pyobject_to_max(re), [[mtimes], pyobject_to_max(im), max_i]])
elif isinstance(obj, NumberFieldElement):
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_quadratic
if isinstance(obj, NumberFieldElement_quadratic) and obj.parent().defining_polynomial().list() == [1,0,1]:
re, im = obj.list()
return EclObject([[mplus], pyobject_to_max(re), [[mtimes], pyobject_to_max(im), max_i]])
return EclObject(obj)

# This goes from SR to EclObject
Expand Down
2 changes: 1 addition & 1 deletion src/sage/rings/integer_ring.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ from sage.categories.basic import EuclideanDomains
from sage.categories.infinite_enumerated_sets import InfiniteEnumeratedSets
from sage.structure.coerce cimport is_numpy_type
from sage.structure.element cimport parent
from sage.structure.element import NumberFieldElement
from sage.structure.parent_gens import ParentWithGens
from sage.structure.parent cimport Parent
from sage.structure.richcmp cimport rich_to_bool
Expand Down Expand Up @@ -412,7 +413,6 @@ cdef class IntegerRing_class(PrincipalIdealDomain):
if x in self:
return self

from sage.rings.number_field.number_field_element import NumberFieldElement
if isinstance(x, NumberFieldElement):
K, from_K = parent(x).subfield(x)
return K.order(K.gen())
Expand Down
4 changes: 4 additions & 0 deletions src/sage/rings/number_field/number_field_element.pyx
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,10 @@ def is_NumberFieldElement(x):
sage: from sage.rings.number_field.number_field_element import is_NumberFieldElement
sage: is_NumberFieldElement(2)
doctest:warning...
DeprecationWarning: is_NumberFieldElement is deprecated;
use isinstance(..., sage.structure.element.NumberFieldElement) instead
See https://trac.sagemath.org/34931 for details.
False
sage: k.<a> = NumberField(x^7 + 17*x + 1)
sage: is_NumberFieldElement(a+1)
Expand Down
4 changes: 2 additions & 2 deletions src/sage/rings/universal_cyclotomic_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,8 @@

from sage.structure.richcmp import rich_to_bool
from sage.structure.unique_representation import UniqueRepresentation
from sage.structure.element import FieldElement, parent
from sage.structure.element import FieldElement, parent, NumberFieldElement

from sage.structure.coerce import py_scalar_to_element
from sage.categories.morphism import Morphism
from sage.rings.ring import Field
Expand Down Expand Up @@ -1537,7 +1538,6 @@ def _element_constructor_(self, elt):
import sage.rings.abc
P = parent(elt)
if isinstance(P, sage.rings.abc.NumberField_cyclotomic):
from sage.rings.number_field.number_field_element import NumberFieldElement
if isinstance(elt, NumberFieldElement):
from sage.rings.number_field.number_field import CyclotomicField
n = P.gen().multiplicative_order()
Expand Down
5 changes: 4 additions & 1 deletion src/sage/schemes/elliptic_curves/cm.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@
PolynomialRing)

from sage.misc.cachefunc import cached_function
from sage.structure.element import NumberFieldElement


@cached_function
def hilbert_class_polynomial(D, algorithm=None):
Expand Down Expand Up @@ -623,7 +625,6 @@ def is_cm_j_invariant(j, method='new'):
True
"""
# First we check that j is an algebraic number:
from sage.rings.all import NumberFieldElement, NumberField
if not isinstance(j, NumberFieldElement) and j not in QQ:
raise NotImplementedError("is_cm_j_invariant() is only implemented for number field elements")

Expand Down Expand Up @@ -670,6 +671,8 @@ def is_cm_j_invariant(j, method='new'):

K = j.parent()
if h < K.absolute_degree():
from sage.rings.number_field.number_field import NumberField

K = NumberField(jpol, 'j')
j = K.gen()

Expand Down
17 changes: 10 additions & 7 deletions src/sage/symbolic/expression_conversions.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@

from sage.rings.rational_field import QQ
from sage.symbolic.ring import SR
from sage.structure.element import Expression
from sage.structure.element import Expression, NumberFieldElement
from sage.functions.all import exp
from sage.symbolic.operators import arithmetic_operators, relation_operators, FDerivativeOperator, add_vararg, mul_vararg
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
from sage.rings.universal_cyclotomic_field import UniversalCyclotomicField


Expand Down Expand Up @@ -441,9 +440,10 @@ def pyobject(self, ex, obj):
sage: ii.pyobject(pi, pi.pyobject())
'Pi'
"""
if (self.interface.name() in ['pari', 'gp'] and
isinstance(obj, NumberFieldElement_gaussian)):
return repr(obj)
if (self.interface.name() in ['pari', 'gp'] and isinstance(obj, NumberFieldElement)):
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
if isinstance(obj, NumberFieldElement_gaussian):
return repr(obj)
try:
return getattr(obj, self.name_init)()
except AttributeError:
Expand Down Expand Up @@ -1020,10 +1020,13 @@ def pyobject(self, ex, obj):
"""
try:
result = getattr(obj, self.name_init)()
if isinstance(obj, NumberFieldElement_gaussian):
return "((%s)::EXPR COMPLEX INT)" % result
except AttributeError:
result = repr(obj)
else:
if isinstance(obj, NumberFieldElement):
from sage.rings.number_field.number_field_element_quadratic import NumberFieldElement_gaussian
if isinstance(obj, NumberFieldElement_gaussian):
return "((%s)::EXPR COMPLEX INT)" % result
return "((%s)::EXPR INT)" % result

def symbol(self, ex):
Expand Down

0 comments on commit 62da507

Please sign in to comment.