저는 matlab에서 C++ 함수로 스크립트를 복사하고 있습니다. 그러나 나는 exp 함수에 대해 다른 결과를 얻는다. std :: exp는 복소수에 대한 MATLAB exp와 다른 결과를 제공합니다
std::complex<double> final_b = std::exp(std::complex<double>(0, 1 * pi));
는 MATLAB 코드
final_b = exp(1i * pi);
에 해당해야하지만이되지 않습니다 : 예를 들어, 조각 다음과 같습니다. MATLAB의 경우 -1 + 0i (올바른 값)를 받고 C++의 경우 -1 + -2.068231e-013 * i를 얻습니다.
이제 처음에는 일종의 반올림 오류라고 생각했지만 더 큰 지수를 가진 실제 스크립트에서는 전혀 다른 숫자를 얻었습니다. 이것의 원인은 무엇입니까? 이 문제를 어떻게 해결할 수 있습니까?
편집 : 내가 수동으로 오일러 공식
exp(x+iy) = exp(x) * (cos(y) + i*sin(y))
와 C에서 같은 불안정한 결과를 얻을 ++
당신이 질문의 내용으로 판단 40two @ 소수점 정밀도 – 101010
부동 용어에 대해 잘 알고 있습니까를, 나는 대답은 '예라고 생각 –
단지. 아이디어, 파이의 정밀도를 확인 했습니까? –