我试图用 C++ 做一些简单的相位计算,发现有时我会从 std::arg
得到错误的结果。当使用真实值作为输入时。
根据 cppreference 上的文档:
Additional overloads are provided for float, double, long double, and all integer types, which are treated as complex numbers with zero imaginary component.
然而,情况似乎并非如此,因为这两个调用返回不同的结果。
auto x1 = std::arg(std::complex<double>{ -1.0, 0.0 });
// x1 = PI (3.14159...)
auto x2 = std::arg(-1.0);
// x2 = 0
我是在标准库的 MSVC 实现中发现了一个错误,还是我遗漏了一些明显的东西?
编译器信息:
Microsoft (R) C/C++ Optimizing Compiler Version 19.21.27702.2 for x86
最佳答案
我创建了一个错误报告,结果发现 MSVC 标准库中有一个错误。现在已经在 VS 2019 16.7 Preview 2 中解决了!
关于c++ - std::arg 为实际输入返回不正确的值(使用 MSVC 编译器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61566077/