Hi
I get an exception when numpy.float32 are passed to c++ functions that are
expecting a float. I have provided a trivial example
#include <boost/python/module.hpp>
> #include <boost/python/def.hpp>
> double sq(double x){ return x*x;}
> BOOST_PYTHON_MODULE(sq)
> {
> boost::python::def("sq",sq);
> }
>
When i run it with :
from sq import sq
import numpy as np
> print sq(3.) #fine
print sq(np.float64(3.)); #fine
print sq(np.float32(3.)); #dosn't work
I get:
9.0
> 9.0
> Traceback (most recent call last):
> File "sq.py", line 6, in <module>
> print sq(np.float32(3.)); #dosn't work
> Boost.Python.ArgumentError: Python argument types in
> sq.sq(numpy.float32)
> did not match C++ signature:
> sq(double)
I know these are different types and I can just recast the input to
float64, but I assumed that a float32->float64 conversion would be
automatic in this case. Is this the way it is supposed to work? Is there a
way to make an explicit conversion happen?
Thanks,
Kevin Meagher
_______________________________________________
Cplusplus-sig mailing list
[email protected]
https://mail.python.org/mailman/listinfo/cplusplus-sig