【发布时间】:2017-01-05 07:12:32
【问题描述】:
我正在将一些 Python 代码转换为 C 代码。
下面的 Python NumPy exp 对复数输出 (6.12323399574e-17-1j) 为 k=1、l=4。
numpy.exp(-2.0*1j*np.pi*k/l)
我将其转换为 C 代码,如下所示。但是输出是1.000000。
#include <complex.h>
#define PI 3.1415926535897932384626434
exp(-2.0*I*PI*k/l)
我错过了什么?
【问题讨论】:
-
你应该在 C 版本中使用
cexp(),不是吗? -
exp是什么?您使用的是 C++ 还是tgmath.h? C 中的exp函数通常不接受复数。无论如何,您如何检查结果?向我们展示可运行的代码。 -
我认为一旦你将
exp切换到cexp,numpy 和 c 都会产生相同的答案。正确答案是-1i。当您假设 6e-17 真的为零时,这就是 numpy 的真正含义。