在OpenCL中,有两个表示无穷大的浮点数学常量。其中之一就是INFINITY
。另一个HUGE_VALF
“求值”为无穷大。
两者有什么区别? “评估为”无限意味着什么?
最佳答案
HUGE_VALF
是一个旧名称,它允许不支持无限量的浮点系统。例如,C标准指定在某些溢出情况下返回HUGE_VALF
。当C实现不支持无穷大时,HUGE_VALF
将是最大的可表示值。当实现确实支持无限性时,HUGE_VALF
将是无限的。 C标准仍然允许这样做,而且我想周围仍然有一些不支持无限性的实现。
OpenCL使用IEEE 754(或多或少),因此它确实具有无限性,因此HUGE_VALF
是无限的。通过定义HUGE_VALF
,OpenCL帮助支持将旧的C代码移植到OpenCL。
关于“HUGE_VALF
计算结果为+ infinity”但INFINITY
是“float类型的常量表达式,表示正无符号无穷大”的措辞,我想知道这是否打算在运行时准备HUGE_VALF
(例如,表示为1./0.
)。但是,documentation也表示HUGE_VALF
是“正浮点常量表达式”。总的来说,这让我认为措辞有点草率,而且HUGE_VALF
和INFINITY
是等效的。
关于floating-point - HUGE_VALF和INFINITY常数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20557691/