Open 56048686-9665-4c5e-973e-6c3add3aa805 opened 12 years ago
A trivial fix would be:
diff --git a/sage/rings/complex_number.pyx b/sage/rings/complex_number.pyx
--- a/sage/rings/complex_number.pyx
+++ b/sage/rings/complex_number.pyx
@@ -148,10 +148,11 @@
elif isinstance(real, list) or isinstance(real, tuple):
re, imag = real
real = re
- elif isinstance(real, complex):
- real, imag = real.real, real.imag
else:
- imag = 0
+ try:
+ real, imag = real.real, real.imag
+ except AttributeError:
+ imag = 0
try:
R = parent._real_field()
rr = R(real)
But perhaps there are better ways.
Milestone sage-4.7.3 deleted
--- a/sage/rings/complex_mpfr.pyx
+++ b/sage/rings/complex_mpfr.pyx
@@ -56,6 +56,7 @@
from sage.libs.gsl.complex cimport *
from sage.libs.mpmath.utils cimport mpfr_to_mpfval
+from mpmath import mpc as mpmath_extmpc
from sage.rings.integer_ring import ZZ
from sage.misc.superseded import deprecated_function_alias
@@ -961,7 +962,7 @@
elif isinstance(real, list) or isinstance(real, tuple):
re, imag = real
real = re
- elif isinstance(real, complex):
+ elif isinstance(real, (complex, mpmath_extmpc)):
real, imag = real.real, real.imag
elif type(real) is gmpy2.mpc:
real, imag = (<gmpy2.mpc>real).real, (<gmpy2.mpc>real).imag
sage: version()
'SageMath version 9.6.beta7, Release Date: 2022-04-02'
sage: import mpmath
sage: z = mpmath.mpc(2, 3)
....: z
mpc(real='2.0', imag='3.0')
sage: complex(z)
(2+3j)
sage: CC(z)
2.00000000000000 + 3.00000000000000*I
Came across this working on #1173:
CC: @nexttime
Component: coercion
Issue created by migration from https://trac.sagemath.org/ticket/11962