On Thu, Dec 9, 2010 at 5:58 AM, Dag Sverre Seljebotn
<da...@student.matnat.uio.no> wrote:
> In the ongoing fwrapification of SciPy [1], I'm getting regression test
> breakage because of this:
>
> def func(float x):
>     return x
>
>  >>> func(1 + 0j)
>     Traceback (most recent call last):
>     ...
>     TypeError: can't convert complex to float
>
>
> I'm wondering: Would people be OK to Cython so that when the imaginary
> part is *exactly* 0, it is OK to convert to native float? Or is failing
> hard the preferred behaviour?
>
> (For all I know, SciPy may prefer to change their behaviour; so I'm just
> doing a poll for now.)
>
> I guess the way to do it would be to try float conversion first, and if
> that fails, try complex conversion and see if the imaginary part ends up
> as 0. That is, it would mean that __complex__ would be called on passed
> in objects that do not support __float__ in the example above.

I'm -1 on making this change. If the author of the user class defined
a __complex__ but not a __float__, we should respect that. Not to
mention the added verbosity to the object -> double path.

- Robert
_______________________________________________
Cython-dev mailing list
Cython-dev@codespeak.net
http://codespeak.net/mailman/listinfo/cython-dev

Reply via email to