在OpenCL中,有两个表示无穷大的浮点数学常数。其中之一就是简单的INFINITY。另一个,HUGE_VALF,“计算为”无穷大。
这两者有什么区别呢?“评估到”无限是什么意思?
发布于 2013-12-13 14:07:18
HUGE_VALF是一个遗留的名称,允许浮点系统不支持无穷大。例如,C标准指定在某些溢出情况下返回HUGE_VALF。当C实现不支持无穷大时,HUGE_VALF将是最大的可表示值。当实现支持无穷大时,HUGE_VALF将是无穷大。C标准仍然允许这样做,我认为有些实现仍然不支持无穷大。
OpenCL使用IEEE754(或多或少),所以它确实有无穷大,所以HUGE_VALF是无穷大的。通过定义HUGE_VALF,OpenCL帮助支持将旧C代码移植到OpenCL。
关于“HUGE_VALF计算为+无穷大”的措辞,但INFINITY是“浮点数类型的常量表达式,表示正无穷大或无符号无穷大”,我想知道这是否是为了允许在运行时准备HUGE_VALF (例如,将其表示为1./0.)。然而,文档也说HUGE_VALF是“一个正浮点常量表达式”。总的来说,这让我觉得措辞有点草率,而且HUGE_VALF和INFINITY是等价的。
https://stackoverflow.com/questions/20557691
复制相似问题