转换前地板转换与convert_T_rtn

问题描述 投票:0回答:1

在OpenCL中,是:

convert_int(floor(my_float))

完全等同于

convert_int_rtn(my_float)

语义上?我会更喜欢前一个命令吗?

如果您回答取决于我选择了int的事实,请尝试将其概括为任意整数类型T

注意:

  • documentation的OpenCL 1.2 convert_T
  • [_rtn的意思是“到负无穷大”。
floating-point type-conversion opencl
1个回答
0
投票

Floor操作,然后以任何舍入模式转换为整数总是产生与向-∞舍入的整数转换相同的结果。

整数范围内的数字证明:

  • 如果x为正,则其底限只能通过将浮点表示形式中的基数b位数清零来表示,其中b是表示中使用的基数。

  • 如果x为负,则其底数在表示中具有相同的基数b指数e或更大。如果相同,则底限是可表示的,因为表示底限所需的位是x有效位的子集。越大越好,因为精确地是-b e + 1,所以地板是可表示的。 (这里我们假设该值不能四舍五入为-∞,这对于具有异常微小的指数范围和/或异常宽的有效位数的浮点格式是可能的。)

  • 如果x的底数可以用目标整数格式表示,则将其转换为整数会生成它(使用任何舍入模式进行转换,因为将不会进行舍入)。同样,将x转换为整数并舍入为-∞将产生相同的值,即x的底数。

如果x的下限不可表示,则两次转换为整数是否产生相同的结果,可能取决于它们对溢出的规定。

© www.soinside.com 2019 - 2024. All rights reserved.