在OpenCL中,是否。
convert_int(floor(my_float))
完全等同于
convert_int_rtn(my_float)
语义上?我是否会更喜欢前一个命令而不是后者?
如果你的答案取决于我选择的是 int
试图将其推广到任意整数类型上 T
.
笔记:
convert_T
._rtn
意思是 "四舍五入到负无穷大"。在任何四舍五入模式下的整数转换之后的floor操作,总是会产生与四舍五入-∞的整数转换相同的结果。
对于整数范围内的数字的证明。
如果x是正数,那么它的下限只需将浮点表示法中的b基数清零即可表示,其中b是表示法中使用的基数。
如果x为负数,那么它的下限要么与表示法中的基数b指数e相同,要么大于e。如果x为负数,那么它的底数要么与表示法中的b基指数e相同,要么大于b基指数e,如果b基指数e相同,那么底数是可以表示的,因为表示法所需的位是x的重要位的子集。e+1. (这里我们假设不四舍五入到-∞,这在指数范围异常小或意义异常宽的浮点格式中是可能的。) 如果x的底数可以用目标整数格式表示,那么将它转换为整数就会产生(使用任何一种四舍五入模式,因为没有四舍五入)。
如果x的底数可以用整数格式表示,那么将其转换为整数就可以得到它(使用任何四舍五入模式进行转换,因为没有四舍五入)。同样,将 x 转换为整数并四舍五入为-∞,将产生相同的值,即 x 的底限。
如果x的底限不可表示,那么两次转换为整数是否产生相同的结果可能取决于它们的溢出规范。