有没有一种快速取浮点数模数的方法?
对于整数,梅森素数有一些技巧,因此可以计算 y = x MOD 2^31-1 而无需除法。 整数技巧
可以对浮点数应用任何类似的技巧吗?
优选地,以一种可以转换为矢量/SIMD 操作,或移动到 GPGPU 代码中的方式。这排除了对浮点数据使用整数计算。
我感兴趣的素数是 2^7-1 和 2^31-1,尽管如果浮点数有更有效的素数,那将是受欢迎的。
该算法的一个预期用途是在将输入浮点数读入算法时计算它们的运行“校验和”。为了避免占用过多的计算能力,我想保持这种轻量级。
显然,类似的技术用于更大的数字,特别是 2^127 - 1。不幸的是,论文中的数学超出了我的范围,我无法弄清楚如何将其转换为更小的素数。
浮点 MOD 2^127 - 1 - HASH127 示例