【发布时间】:2013-06-26 09:17:04
【问题描述】:
看一下自爆的代码:
#include <complex>
#include <iostream>
int main()
{
std::cout << std::pow( std::complex<double>(0,0), std::complex<double>(0,0) ) << "\n";
std::cout << std::pow( std::complex<double>(0,0), double(0) ) << "\n";
return 0;
}
g++(4.8.1) 给出的输出为
(nan,nan)
(-nan,-nan)
虽然 clang++(3.3) 给出了输出
(-nan,-nan)
(-nan,-nan)
但我期待 (1.0, 0.0)。
谁能解释一下?
【问题讨论】:
-
@Mr.Alien:确实如此,我不明白他为什么期待他所期待的。
-
@PlasmaHH 这就是他问的原因:)
-
zero到zero未定义:math.utah.edu/~pa/math/0to0.html -
@Mr.Alien:我不认为他在问他为什么期待 1.0,0.0 ...
-
在数学上应该是 (1, 0),但是为什么这里 g++/clang++ 给出 (nan,nan)——这就是问题所在。
标签: c++ numeric nan complex-numbers exponential