Cython中的复数 - I或1j?

时间:2015-09-18 03:34:25

标签: cython

每当我尝试在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?

0 个答案:

没有答案