每当我尝试在Cython中进行简单的复杂算术时,我似乎得到了一些Python开销;这与使用Pythonic 1j
有什么关系吗?此时,我找不到任何方法将C风格的虚构单元导入Cython。这可能吗?
例如,下面的简单Cython函数将极坐标复数转换为矩形。 (注意这是使用来自"complex.h"
库)的cos和sin
cdef float complex rect(float r, float phi):
return r*cos(phi) + r*sin(phi)*1j
此代码由Cython转换为以下C代码:
__pyx_t_1 = __Pyx_c_sum(__pyx_t_double_complex_from_parts((__pyx_v_r * cos(__pyx_v_phi)), 0), __Pyx_c_prod(__pyx_t_double_complex_from_parts((__pyx_v_r * sin(__pyx_v_phi)), 0), __pyx_t_double_complex_from_parts(0, 1.0)));
__pyx_r = __pyx_t_float_complex_from_parts(__Pyx_CREAL(__pyx_t_1), __Pyx_CIMAG(__pyx_t_1));
goto __pyx_L0;
考虑到这个函数的简单特性,看起来它应该能够转换为纯C但它仍然部分存在于Python领域 - 是否有一些我为了使这个语句转换为纯C?