# HG changeset patch
# User Nick Alexander <ncalexander@gmail.com>
# Date 1241915774 25200
# Branch symbolics_switch
# Node ID c2c97977273604df2685527796bb38ab6377973d
# Parent  17219f455526ca74bc302d1543fad0e4e3f971b7
[mq]: number_fields.patch

diff -r 17219f455526 -r c2c979772736 sage/rings/number_field/number_field.py
--- a/sage/rings/number_field/number_field.py	Sat May 09 16:32:49 2009 -0700
+++ b/sage/rings/number_field/number_field.py	Sat May 09 17:36:14 2009 -0700
@@ -6778,16 +6778,18 @@
         # crash Sage: see #5316).  Overwrite them with correct values.
         self._zero_element = self(0)
         self._one_element =  self(1)
-        if self.coerce_embedding() is None:
+
+        emb = self.coerce_embedding()
+        if emb is None:
             self._standard_embedding = True
         else:
             rootD = number_field_element_quadratic.NumberFieldElement_quadratic(self, (QQ(0),QQ(1)))
             if D > 0:
                 from sage.rings.real_double import RDF
-                self._standard_embedding = RDF(rootD) > 0
+                self._standard_embedding = RDF.has_coerce_map_from(self) and RDF(rootD) > 0
             else:
                 from sage.rings.complex_double import CDF
-                self._standard_embedding = CDF(rootD).imag() > 0
+                self._standard_embedding = CDF.has_coerce_map_from(self) and CDF(rootD).imag() > 0
 
     def _coerce_map_from_(self, K):
         """
diff -r 17219f455526 -r c2c979772736 sage/rings/number_field/number_field_base.pyx
--- a/sage/rings/number_field/number_field_base.pyx	Sat May 09 16:32:49 2009 -0700
+++ b/sage/rings/number_field/number_field_base.pyx	Sat May 09 17:36:14 2009 -0700
@@ -138,7 +138,7 @@
         We compute the Minkowski bound for $\QQ[\sqrt[3]{2}]$:
             sage: K = QQ[2^(1/3)]
             sage: B = K.minkowski_bound(); B
-            16*sqrt(3)/(3*pi)
+            16/3*sqrt(3)/pi
             sage: B.n()
             2.94042077558289
             sage: int(B)
@@ -184,7 +184,7 @@
         field, where the Minkowski bound is much better:
             sage: K = QQ[sqrt(5)]
             sage: K.minkowski_bound()
-            sqrt(5)/2
+            1/2*sqrt(5)
             sage: K.minkowski_bound().n()
             1.11803398874989
             sage: K.bach_bound()
@@ -196,7 +196,7 @@
         degree field, where the Bach bound is much better:
             sage: K = CyclotomicField(37)
             sage: K.minkowski_bound().n()
-            7.50857335698545e14
+            7.50857335698544e14
             sage: K.bach_bound().n()
             191669.304126267
 
diff -r 17219f455526 -r c2c979772736 sage/rings/number_field/number_field_element.pyx
--- a/sage/rings/number_field/number_field_element.pyx	Sat May 09 16:32:49 2009 -0700
+++ b/sage/rings/number_field/number_field_element.pyx	Sat May 09 17:36:14 2009 -0700
@@ -1323,7 +1323,8 @@
         
             sage: K.<a> = NumberField(x^3 + x - 1, embedding=0.68)
             sage: b = SR(a); b
-            (sqrt(31)/(6*sqrt(3)) + 1/2)^(1/3) - 1/(3*(sqrt(31)/(6*sqrt(3)) + 1/2)^(1/3))
+            (1/18*sqrt(3)*sqrt(31) + 1/2)^(1/3) - 1/3/(1/18*sqrt(3)*sqrt(31) + 1/2)^(1/3)
+
             sage: (b^3 + b - 1).simplify_radical()
             0
         
@@ -1338,9 +1339,14 @@
         
             sage: K.<zeta> = CyclotomicField(19)
             sage: SR(zeta)
-            e^(2*I*pi/19)
+            e^(2/19*I*pi)
+            sage: CC(zeta)
+            0.945817241700635 + 0.324699469204683*I
+            sage: CC(SR(zeta))
+            0.945817241700635 + 0.324699469204683*I
+
             sage: SR(zeta^5 + 2)
-            e^(10*I*pi/19) + 2
+            e^(2/19*I*pi)*e^(8/19*I*pi) + 2
         
         For degree greater than 5, sometimes Galois theory prevents a
         closed-form solution::
@@ -1355,7 +1361,7 @@
         
             sage: K.<a> = NumberField(x^6-x^3-1, embedding=1)
             sage: SR(a)
-            (sqrt(5) + 1)^(1/3)/2^(1/3)
+            1/2*(sqrt(5) + 1)^(1/3)*2^(2/3)
         """
         if self.__symbolic is None:
         
@@ -1377,11 +1383,9 @@
             
             if isinstance(K, number_field.NumberField_cyclotomic):
                 # solution by radicals may be difficult, but we have a closed form
-                from sage.functions.all import exp
-                from sage.rings.complex_field import ComplexField
-                from sage.rings.real_mpfr import RR
+                from sage.all import exp, I, pi, ComplexField, RR
                 CC = ComplexField(53)
-                two_pi_i = 2 * SR.pi()*SR(-1).sqrt()
+                two_pi_i = 2 * pi * I
                 k = ( K._n()*CC(K.gen()).log() / CC(two_pi_i) ).real().round() # n ln z / (2 pi i)
                 gen_image = exp(k*two_pi_i/K._n())
                 if self is gen:
diff -r 17219f455526 -r c2c979772736 sage/rings/number_field/number_field_element_quadratic.pyx
--- a/sage/rings/number_field/number_field_element_quadratic.pyx	Sat May 09 16:32:49 2009 -0700
+++ b/sage/rings/number_field/number_field_element_quadratic.pyx	Sat May 09 17:36:14 2009 -0700
@@ -873,7 +873,7 @@
             sage: a.real()
             -1/2
             sage: SR(a)
-            (sqrt(3)*I - 1)/2
+            1/2*I*sqrt(3) - 1/2
             sage: bool(I*a.imag() + a.real() == a)
             True
 
diff -r 17219f455526 -r c2c979772736 sage/rings/polynomial/polynomial_element.pyx
--- a/sage/rings/polynomial/polynomial_element.pyx	Sat May 09 16:32:49 2009 -0700
+++ b/sage/rings/polynomial/polynomial_element.pyx	Sat May 09 17:36:14 2009 -0700
@@ -3824,7 +3824,7 @@
         
             sage: X = var('X')
             sage: f = expand((X-1)*(X-I)^3*(X^2 - sqrt(2))); f
-            X^6 - (3*I - 1)*X^5 - X^4*sqrt(2) + (3*I - 3)*X^4 + (3*I + 1)*X^3*sqrt(2) + (I + 3)*X^3 - (3*I + 3)*X^2*sqrt(2) - I*X^2 - (I - 3)*X*sqrt(2) + I*sqrt(2)
+            -sqrt(2)*X^4 + I*sqrt(2) + X^6 - (3*I - 1)*X^5 + (3*I - 3)*X^4 + (3*I + 1)*sqrt(2)*X^3 + (I + 3)*X^3 - (3*I + 3)*sqrt(2)*X^2 - I*X^2 - (I - 3)*sqrt(2)*X
             sage: print f.roots()
             [(I, 3), (-2^(1/4), 1), (2^(1/4), 1), (1, 1)]
         
@@ -4019,7 +4019,7 @@
             sage: p.roots(ring=RR, algorithm='numpy')
             Traceback (most recent call last):
             ...
-            ValueError: array must not contain infs or NaNs
+            LinAlgError: Array must not contain infs or NaNs
             sage: p.roots(ring=RR, algorithm='pari')
             [(-3.50746621104340e451, 1)]
             sage: p.roots(ring=AA)
@@ -4028,7 +4028,7 @@
             [(-3.5074662110434039?e451, 1)]
             sage: p = bigc*x + 1
             sage: p.roots(ring=RR)
-            [(0.000000000000000, 1)]
+            [(-0.000000000000000, 1)]
             sage: p.roots(ring=AA)
             [(-2.8510609648967059?e-452, 1)]
             sage: p.roots(ring=QQbar)
