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

Commit 6a0a90c

Browse files
committed
34212: log embedding in number_field.py
1 parent 8cf8e21 commit 6a0a90c

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

src/sage/rings/number_field/number_field.py

+60
Original file line numberDiff line numberDiff line change
@@ -9292,6 +9292,66 @@ def minkowski_embedding(self, B=None, prec=None):
92929292

92939293
return sage.matrix.all.matrix(d)
92949294

9295+
def logarithmic_embedding(self, prec=53):
9296+
"""
9297+
Return the image of ``self`` under the logarithmic embedding.
9298+
9299+
The logarithmic embedding is defined as a map from the number field ``self`` to `\RR^n`.
9300+
9301+
It is defined under Definition 4.9.6 in [Cohen1993]_.
9302+
9303+
INPUT:
9304+
9305+
- ``prec`` -- desired floating point precision.
9306+
9307+
OUTPUT:
9308+
9309+
- a tuple of real numbers.
9310+
9311+
EXAMPLES::
9312+
9313+
sage: CF.<a> = CyclotomicField(97)
9314+
sage: log_map = logarithmic_embedding(CF)
9315+
sage: log_map(0)
9316+
(-1)
9317+
sage: log_map(7)
9318+
(1.94591014905531)
9319+
9320+
::
9321+
9322+
sage: F.<a> = NumberField(x^3 + 5)
9323+
sage: K.<b> = F.extension(x^2 + 2)
9324+
sage: log_map = logarithmic_embedding(K)
9325+
sage: log_map(0)
9326+
(-1, -1)
9327+
sage: log_map(7)
9328+
(1.94591014905531, 3.89182029811063)
9329+
"""
9330+
def closure_map(x):
9331+
"""
9332+
The function closure of the logarithmic embedding.
9333+
"""
9334+
K = self.base_ring()
9335+
K_embeddings = K.places(prec)
9336+
r1, r2 = K.signature()
9337+
r = r1 + r2 - 1
9338+
9339+
Reals = RealField(prec)
9340+
9341+
if x == 0:
9342+
return vector([-1 for _ in range(r + 1)])
9343+
9344+
x_logs = []
9345+
for i in range(r1):
9346+
sigma = K_embeddings[i]
9347+
x_logs.append(Reals(abs(sigma(x))).log())
9348+
for i in range(r1, r + 1):
9349+
tau = K_embeddings[i]
9350+
x_logs.append(2 * Reals(abs(tau(x))).log())
9351+
9352+
return vector(x_logs)
9353+
return closure_map
9354+
92959355
def places(self, all_complex=False, prec=None):
92969356
r"""
92979357
Return the collection of all infinite places of self.

0 commit comments

Comments
 (0)