C++ NaN和犰狳NaN有什么区别
What are the differences between the C++ NaN and Armadillo NaN?
我所说的"C++ NaN"是这个cmath函数可能返回的那个:
double nan (const char* tagp);
"犰狳NaN"是犰狳线性代数包的一部分:
datum::nan “not a number” (NaN); caveat: NaN is not equal to anything, even itself
混合它们安全吗?
思维练习:
假设您有一个函数,可以从犰狳矩阵中查找并返回一个值:
arma::mat lookup_table;
in a loop or something
double val = deriving_value_from_table(lookup_table, input1, input2, input3 ...)
假设函数确定它应该返回lookup_table(3, 2)
,并且所述值为 arma::datum::nan
。
我可以使用val
并期望它是一个合适的 NaN 吗?如果我稍后将val
放入不同的犰狳矩阵中,像arma::is_finite(X)
这样的函数是否仍会按预期工作?
NaN 是底层double
实现的一类值,在定义std::nan
且犰狳可以运行的任何平台上,几乎都是通常的 IEEE 754。任何安静的 NaN 都和其他任何值一样丑陋——即它们都会比较与任何值(包括它自己(不同的值,这是一个在硬件中处理的事情,而不是由犰狳或标准库处理。
std::nan
返回的内容与犰狳 NaN 之间的唯一区别可能是它们可以具有不同的底层位模式 - 因为有许多不同的值是有效的 NaN。尽管如此,这种差异只有显式检查基础字节的代码才能看到,因此在数字代码中应该是完全无关紧要的。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 警告处理为错误这里有什么问题
- 什么时候调用组成单元对象的析构函数
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 什么时候在C++中返回常量引用是个好主意
- 当在同一名称空间中有两个具有相同签名的函数时,会发生什么
- C++避免重复声明的语法是什么
- c++库的公共头文件中应该包含什么
- 问题:什么是QAbstractItemView::NoEditTriggers的反面
- 有什么方法可以遍历结构吗
- C++ NaN和犰狳NaN有什么区别
- 双倍和NaN比较的结果是什么
- 着色器中实现双精度cos()的结果是NaN,但在CPU上运行良好.出了什么问题
- nan在C++中是什么意思?为什么pow(-4,-2.1)返回-nan
- 将浮点值与特定NAN值进行比较的最正确方法是什么
- 我的代码出了什么问题?产出(女性平均绩点:nan)
- 如果任一参数为 NaN,什么会导致 C/C++ <、<= 和 == 运算符返回 true?
- 将数字与NaN进行比较的结果是什么