是否有一個快速的方法來獲取浮點數的模數?快速,矢量化方法取特殊素數的浮點數模數?
對於整數,梅森素數有一些技巧,所以可以計算y = x MOD 2^31-1而不需要除法。 integer trick
可以使用任何類似的技巧來應用浮點數嗎?
優選地,以可以轉換成向量/ SIMD操作或移入GPGPU代碼的方式。這排除了對浮點數據使用整數計算。
我感興趣的素數將是2^7-1和2^31-1,但如果浮點數的效率更高,那麼將會受到歡迎。
該算法的一個預期用途是在輸入浮點數正在讀入算法時計算運行的「校驗和」。爲了避免佔用太多的計算能力,我想保持這種輕量級。
顯然類似的技術被用於更大的數字,特別是2^127 - 1.不幸的是,本文中的數學超出了我,我還沒有弄清楚如何將它轉換爲更小的素數。
Example of floating point MOD 2^127 - 1 - HASH127
這是可能的計算任何冪的兩個模數沒有劃分;你確定你在問你打算的問題嗎?我相信你實際上是在尋找計算mod'2^7 - 1'和'2^31 - 1'。 – 2010-03-16 20:00:21
2^7和2^31不是素數 - 你能更準確地更改一下你的問題嗎? – 2010-03-16 20:02:13
您定位了哪些指令集? – user287792 2010-03-17 16:58:48