c++ - std::arg 为实际输入返回不正确的值(使用 MSVC 编译器)

标签 c++ visual-studio c++11 visual-c++

我试图用 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/

相关文章:

C++ 反射指南/教程

c++ - 你如何构造一个 typedef 来记住方法

c++ - 参数包是模板参数吗?

c++ - Delphi中树形 View 中节点的放置位置绘制线

visual-studio - 如何获取缓存在注册表中的 Visual Studio Online 凭据?

c# - 预构建 MSBuild 任务以更新与构建的 exe 不同步的 AssemblyInfo

c++ - declval<T> 与 declval<T&>

c++ - 迭代从 1 到 i*i 时的时间复杂度是多少

c# - 无法在 Visual C# 2010 Express 中访问构建配置管理器或构建配置

c++ - 第一个 C++ 类(class),对某些事情不确定。特别是“const std::string& 提示