12得票4回答
为什么isnan含义不明确,如何避免它?

由于isnan既可以是宏(在C++98中),也可以是命名空间std中定义的函数(在C++11中),因此编写适用于两种情况的代码的一种明显(可能是天真)的方法如下所示: #include <cmath> int main() { double x = 0; using n...

12得票4回答
头文件cmath.h和编译错误

我曾经使用math.h没有任何问题。现在,我使用一个外部库,它本身有一个名为math.h的文件,但是它包含。 将此库添加到我的项目中(甚至只添加包含目录,而不更改代码),现在会从生成大量错误: “C:\Program Files\Microsoft Visual Studio 8\VC\inc...

12得票1回答
GCC C++ pow 精度问题

我参加了一场计算比赛,发现了一个奇怪的bug。pow(26,2)总是返回675,有时候是674?即使正确答案是676。这种错误也会在pow(26,3),pow(26,4)等操作中出现。 比赛后进行了一些调试,我认为问题与int向下取整有关。有趣的是,在以前从未遇到过这种错误。我的计算机在Win...

12得票2回答
在使用VS2010编译旧的C++代码时出现了cmath编译错误。

我继承了几个C++文件和一个相应的makefile,并试图将它们作为一个解决方案导入到VS2010中。我创建了一个空项目,并为makefile的一个目标添加了相应的C++和头文件(.hpp)。 然而,当我尝试编译项目时,立即从cmath中得到大量的C2061(语法错误标识符)错误,涉及aco...

11得票3回答
标准库中常见的数学函数为什么不是“常量表达式”?

由于某种原因,clang++(但不是 g++) 抱怨:constexpr double invdecayf1m(double x) { return -log1p(-x); } 告诉我non-constexpr function 'log1p' cannot be used in a co...

11得票2回答
MSVC 中的 std::isfinite

C++11和C11标准定义了std::isfinite函数。Visual Studio 2012似乎没有将其作为cmath或math.h的一部分提供,但有amp_math.h似乎提供此函数。 isfinite是否可与std::isfinite互换使用?文档没有讨论调用NAN时的行为,并且我没...

11得票1回答
clang++在macOS Catalina不能编译cmath库

我有一个简单的C++程序,它导入了cmath库。#include <cmath> int main() { return 0; } 我正在尝试使用以下命令进行编译。clang++ -o test main.cpp -std=c++14 但是,我收到以下错误信息In fil...

10得票1回答
C++中的Math接口与cMath有何区别?

我的构建系统 MacOS 10.6.3 上的 POSIX 数学库接口是 math.h,但是在我的目标系统上,接口文件的名称是 cmath.h。在学校里我们使用 cmath,我想确保我的项目在提交时编译通过,应该如何实现。学校的服务器和工作站都是运行 Windows XP 的 x86 平台。GC...

10得票3回答
模糊的abs调用

我有一个自定义数据类型,在实践中可以是float或double。在除了OSX以外的每个操作系统上,我都能够成功构建这个C++11模板: #include <cmath> #include <cstdlib> #include <cstdint> temp...

10得票2回答
在 cmath 中实现 pow() 函数及高效替代方法

我读过cmath通过执行exp(b*log(a))来计算pow(a,b)。当b是整数时,不应使用它,因为它会大大减慢计算速度。在以下情况下有哪些替代方案: 计算大量连续的使用相同常量a的pow() 事先已知b将肯定是整数? 我正在寻找在这些特定场景下高效快速的替代方案。