diff --git a/src/sage/rings/number_field/number_field.py b/src/sage/rings/number_field/number_field.py index b9a244602dc..fdfdf70b73a 100644 --- a/src/sage/rings/number_field/number_field.py +++ b/src/sage/rings/number_field/number_field.py @@ -9293,6 +9293,48 @@ def minkowski_embedding(self, B=None, prec=None): return sage.matrix.all.matrix(d) def logarithmic_embedding(self, prec=53): + """ + Return the morphism of ``self`` under the logarithmic embedding + in the category Set. + + The logarithmic embedding is defined as a map from the number field ``self`` to `\RR^n`. + + It is defined under Definition 4.9.6 in [Cohen1993]_. + + INPUT: + + - ``prec`` -- desired floating point precision. + + OUTPUT: + + - a tuple of real numbers. + + EXAMPLES:: + + sage: CF. = CyclotomicField(97) + sage: hom = Hom(CF, EuclideanSpace(1), Sets()) + sage: f = hom(logarithmic_embedding(CF(0))) + sage: f(0) + (-1) + sage: f(7) + (1.94591014905531) + + :: + + sage: F. = NumberField(x^3 + 5) + sage: K. = F.extension(x^2 + 2) + sage: hom = Hom(K, EuclideanSpace(2), Sets()) + sage: f = hom(logarithmic_embedding(K(0))) + sage: f(0) + (-1, -1) + sage: f(7) + (1.94591014905531, 3.89182029811063) + """ + log_map = self._logarithmic_embedding_helper(prec) + log_hom = Hom(self.base_ring(), EuclideanSpace(len(log_map(0))), Sets()) + return log_hom(K(0)._logarithmic_embedding_helper) + +def _logarithmic_embedding_helper(self, prec=53): """ Return the image of ``self`` under the logarithmic embedding.