【发布时间】:2016-08-12 11:33:01
【问题描述】:
我目前正在为使用 std::complex<double> 的 C++ 项目编写一个包装器,在 cython 中可以使用 libcpp.complex.complex[double]。
但是,这与 Python 复合体之间没有隐式转换,我正在尝试找到进行此转换的最佳方法。
显而易见的是使用
cdef libcpp.complex.complex[double] x = ...
X = complex(x.real(),x.imag()
和
cdef complex Y = ...
cdef libcpp.complex.complex[double] y = libcpp.complex.complex[double](Y.real, Y.imag)
和
cdef libcpp.complex.complex[double] z
cdef complex Z = ...
z.real(Z.real)
z.imag(Z.imag)
但是有没有更好的方法,最好是让 cython 自动进行转换。
一方面,这发生在一些 cpdef 函数中,我想避免在来自 cython 的调用中使用 Python complex 以提高速度。
但据我所知,cython 无法隐式执行此转换,因此我无法避免将 Python 复合体用于可从 Python 或 C++ 调用的代码。
【问题讨论】:
标签: python c++ std cython complex-numbers