Hi, On Sat, Jan 04, 2014 at 01:03:21AM +0100, Harald Schilly wrote: > Here is a problem maybe somebody can help with (reported on sage-support) > > A complex number in an arithmetic operation with a numpy float gives a > wrong answer ... i.e. the complex part is dropped. > > import numpy as np > 1j / np.float64(2) > > gives 0.0
On my Sage 6.0, i first get a warning (according to http://sourceforge.net/projects/numpy/files/NumPy/1.5.0/NOTES.txt/view the message comes from numpy): sage: 1j / np.float64(2) /opt/sagemath/sage-6.0-i686-Linux/src/bin/sage-ipython:1: ComplexWarning: Casting complex values to real discards the imaginary part #!/usr/bin/env python 0.0 So, this is not really a bug ;) How i understand it, the problem comes from a lack of good coercion between ComplexNumbers and np.float64, which only raises a warning and not an error: sage: import sage.structure.element as e sage: cm = e.get_coercion_model() sage: cm.common_parent(1j, np.float64(2)) <type 'numpy.float64'> sage: np.float64(1j) 0.0 There is an old ticket asking to clean the relation between Sage and numpy: http://trac.sagemath.org/ticket/8824 That said, the following symbolic works (because np.float64 are coreced to SR): sage: I / np.float64(2) 0.5*I Ciao, Thierry > 1j + np.float64(2) > > gives 2.0 > > It works with float32/float though: > > 1j + np.float32(2) > > (2+1j) > > Harald > > -- > You received this message because you are subscribed to the Google Groups > "sage-devel" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to sage-devel+unsubscr...@googlegroups.com. > To post to this group, send email to sage-devel@googlegroups.com. > Visit this group at http://groups.google.com/group/sage-devel. > For more options, visit https://groups.google.com/groups/opt_out. -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/groups/opt_out.