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

Commit a03b6ac

Browse files
committed
fix
1 parent 76ba3fe commit a03b6ac

File tree

2 files changed

+53
-50
lines changed

2 files changed

+53
-50
lines changed

src/sage/rings/number_field/number_field.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,8 @@
156156

157157
_NumberFields = NumberFields()
158158

159-
159+
from sage.categories.homset import Hom
160+
from sage.categories.sets_cat import Sets
160161
from sage.rings.number_field.morphism import RelativeNumberFieldHomomorphism_from_abs
161162

162163

@@ -9328,9 +9329,10 @@ def logarithmic_embedding(self, prec=53):
93289329
sage: f(7)
93299330
(1.94591014905531, 3.89182029811063)
93309331
"""
9331-
log_map = self._NumberFieldElement_logarithmic_embedding_helper(prec)
9332+
from sage.manifolds.differentiable.examples.euclidean import EuclideanSpace
9333+
log_map = self(0)._logarithmic_embedding_helper(prec)
93329334
log_hom = Hom(self.base_ring(), EuclideanSpace(len(log_map(0))), Sets())
9333-
return log_hom(K(0)._NumberFieldElement_logarithmic_embedding_helper)
9335+
return log_hom(self(0)._logarithmic_embedding_helper)
93349336

93359337
def places(self, all_complex=False, prec=None):
93369338
r"""

src/sage/rings/number_field/number_field_element.pyx

+48-47
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ ZZ = sage.rings.integer_ring.ZZ
8686
Integer_sage = sage.rings.integer.Integer
8787

8888
from sage.rings.real_mpfi import RealInterval
89+
from sage.rings.real_mpfr import RealField
8990

9091
from sage.rings.complex_mpfr import ComplexField
9192
from sage.rings.cc import CC
@@ -4118,64 +4119,64 @@ cdef class NumberFieldElement(FieldElement):
41184119
return (self.global_height_non_arch(prec)+self.global_height_arch(prec))/self.number_field().absolute_degree()
41194120

41204121
def _logarithmic_embedding_helper(self, prec=53):
4121-
"""
4122-
Return the image of ``self`` under the logarithmic embedding.
4122+
"""
4123+
Return the image of ``self`` under the logarithmic embedding.
41234124
4124-
The logarithmic embedding is defined as a map from the number field ``self`` to `\RR^n`.
4125+
The logarithmic embedding is defined as a map from the number field ``self`` to `\RR^n`.
41254126
4126-
It is defined under Definition 4.9.6 in [Cohen1993]_.
4127+
It is defined under Definition 4.9.6 in [Cohen1993]_.
41274128
4128-
INPUT:
4129+
INPUT:
41294130
4130-
- ``prec`` -- desired floating point precision.
4131+
- ``prec`` -- desired floating point precision.
41314132
4132-
OUTPUT:
4133+
OUTPUT:
41334134
4134-
- a tuple of real numbers.
4135+
- a tuple of real numbers.
41354136
4136-
EXAMPLES::
4137+
EXAMPLES::
41374138
4138-
sage: CF.<a> = CyclotomicField(97)
4139-
sage: log_map = CF._logarithmic_embedding_helper()
4140-
sage: log_map(0)
4141-
(-1)
4142-
sage: log_map(7)
4143-
(1.94591014905531)
4139+
sage: CF.<a> = CyclotomicField(97)
4140+
sage: log_map = CF(0)._logarithmic_embedding_helper()
4141+
sage: log_map(0)
4142+
(-1)
4143+
sage: log_map(7)
4144+
(1.94591014905531)
41444145
4145-
::
4146+
::
41464147
4147-
sage: F.<a> = NumberField(x^3 + 5)
4148-
sage: K.<b> = F.extension(x^2 + 2)
4149-
sage: log_map = K._logarithmic_embedding_helper()
4150-
sage: log_map(0)
4151-
(-1, -1)
4152-
sage: log_map(7)
4153-
(1.94591014905531, 3.89182029811063)
4148+
sage: F.<a> = NumberField(x^3 + 5)
4149+
sage: K.<b> = F.extension(x^2 + 2)
4150+
sage: log_map = K(0)._logarithmic_embedding_helper()
4151+
sage: log_map(0)
4152+
(-1, -1)
4153+
sage: log_map(7)
4154+
(1.94591014905531, 3.89182029811063)
4155+
"""
4156+
def closure_map(x):
4157+
"""
4158+
The function closure of the logarithmic embedding.
41544159
"""
4155-
def closure_map(x):
4156-
"""
4157-
The function closure of the logarithmic embedding.
4158-
"""
4159-
K = self.base_ring()
4160-
K_embeddings = K.places(prec)
4161-
r1, r2 = K.signature()
4162-
r = r1 + r2 - 1
4163-
4164-
Reals = RealField(prec)
4165-
4166-
if x == 0:
4167-
return vector([-1 for _ in range(r + 1)])
4168-
4169-
x_logs = []
4170-
for i in range(r1):
4171-
sigma = K_embeddings[i]
4172-
x_logs.append(Reals(abs(sigma(x))).log())
4173-
for i in range(r1, r + 1):
4174-
tau = K_embeddings[i]
4175-
x_logs.append(2 * Reals(abs(tau(x))).log())
4176-
4177-
return vector(x_logs)
4178-
return closure_map
4160+
K = self.base_ring()
4161+
K_embeddings = K.places(prec)
4162+
r1, r2 = K.signature()
4163+
r = r1 + r2 - 1
4164+
4165+
Reals = RealField(prec)
4166+
4167+
if x == 0:
4168+
return vector([-1 for _ in range(r + 1)])
4169+
4170+
x_logs = []
4171+
for i in range(r1):
4172+
sigma = K_embeddings[i]
4173+
x_logs.append(Reals(abs(sigma(x))).log())
4174+
for i in range(r1, r + 1):
4175+
tau = K_embeddings[i]
4176+
x_logs.append(2 * Reals(abs(tau(x))).log())
4177+
4178+
return vector(x_logs)
4179+
return closure_map
41794180

41804181
def numerator_ideal(self):
41814182
"""

0 commit comments

Comments
 (0)