floating-point - HUGE_VALF和INFINITY常数之间的差异

标签 floating-point opencl

在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_VALFINFINITY是等效的。

关于floating-point - HUGE_VALF和INFINITY常数之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20557691/

相关文章:

optimization - 是否有优化浮点运算以提高精度(而不是速度)的编译器?

c++ - 我可以在相同的设备缓冲区上一个接一个地调用 OpenCL 内核吗?

c - OpenCL 哪个 SDK 最好?

c - 如何在没有警告的情况下传递用户定义的固定长度数组类型(C 和 OpenCL)

c++ - 如何使用cout以全精度打印 double 值?

python - 当指数达到-127时如何在Python中计算尾数

java - Java 中的 float 数据类型精度

performance - OpenCL - OpenGL 互操作性能

c++ - clEnqueueNDRangeKernel 阻塞执行

optimization - 如何将四个无符号字节(0-255)编码为浮点并使用HLSL再次返回?