我想测试对复数 (std::complex) 的操作是否会导致 +/- INF 或 NAN 结果。 (非收敛结果。)
例如在映射 z -> z * z + c 下。
对于 float 或 double 数据类型,我相信可以使用 x != x 来测试 NAN。我不确定这是否适用于 +/- INF。
最佳答案
使用std::isfinite
.如果其输入既不是 nan
也不是 inf
,则此函数返回 true。您还可以使用 std::isnan
和 std::isinf
检查那些特定的属性。
编辑:对于 std::complex
,您可以对 real
和 imag
部分应用相同的检查。您也可以简单地将它应用于 std::complex
对象的 abs
。
关于NAN、INF(非收敛)的 C++ std::complex<> 数据类型测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26330120/