HUGE_VALF和INFINITY常量之间的差异

时间:2013-12-13 01:42:43

标签: floating-point opencl

在OpenCL中,有两个表示无穷大的浮点数学常量。其中一个就是INFINITY。另一个,HUGE_VALF,“评估为”无穷大。

这两者有什么区别? “评估”无限是什么意思?

1 个答案:

答案 0 :(得分:8)

HUGE_VALF是一个遗留名称,允许不支持无穷大的浮点系统。例如,C标准指定在某些溢出情况下返回HUGE_VALF。当C实现不支持无穷大时,HUGE_VALF将是最大的可表示值。当一个实现确实支持无穷大时,HUGE_VALF将是无限的。 C标准仍然允许这样做,我想有一些实现仍然不支持无穷大。

OpenCL使用IEEE 754(或多或少),因此它确实具有无穷大,因此HUGE_VALF是无限的。通过定义HUGE_VALF,OpenCL有助于支持将旧C代码移植到OpenCL。

关于“HUGE_VALF评估为+无穷大”的措辞,但INFINITY是“表示正或无符号无穷大的float类型的常量表达式”,我想知道这是否意图允许HUGE_VALF的一些运行时准备(例如,表达为1./0.)。但是,documentation也表示HUGE_VALF是“正浮点常量表达式。”总而言之,这让我觉得措辞有点草率,HUGE_VALF和{ {1}}是等价的。