python - 复杂转换为 Python Complex

标签 python c++ std cython complex-numbers

我目前正在为使用 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 - 复杂转换为 Python Complex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36732779/

相关文章:

c++ - 这个语法 (0 < x < 10) 在 C++ 中有什么作用?

c++ - 右值和左值引用的模板特化

c++ - 简化对 vector 的查找操作

python - 如何将 (2,4) 矩阵与 (4,1) 矩阵相乘?

Python - 错误 98 地址已被使用,如何让它更快?这样在 kill 和快速重启时它不会失败?

Python3 : Convert arbitrary date to day of the week

c++ - 标准容器上带有迭代器的特定路线

python - 随机 json.decoder.JSONDecodeError : Expecting value: line 1 column 1 (char 0)

c++ - 显示对 std::ostream 的输入

c++ - 如何复制构造一个带有指向浮点 block 的指针的 std::vector 并将其传递给线程?