[英]Why does NumPy.exp show a different result than exp in C
我正在將一些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)
我想念什么?
您必須使用cimag
和creal
來打印數據。
C版:
#include <stdio.h>
#include <complex.h>
#include <tgmath.h>
int main(){
int k=1;
int l=4;
double PI = acos(-1);
double complex z = exp(-2.0*I*PI*k/l);
printf(" %.1f%+.1fj\n", creal(z), cimag(z));
return 0;
}
輸出:
0.0-1.0j
Python版本:
import numpy as np
k=1
l=4
z = np.exp(-2.0*1j*np.pi*k/l)
print(z)
輸出:
6.12323399574e-17-1j
這是正確的C代碼,可以打印出您的答案:
x = cexp(-2.0*I*PI*0.25);
printf("%f + i%f\n", creal(x), cimag(x));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.