浮動小数点数のモジュラスを取るための高速な方法はありますか?
整数では、メルセンヌ素数のトリックがあるため、除算を必要とせずに y = x MOD 2^31-1 を計算できます。 整数トリック
浮動小数点数に同様のトリックを適用できますか?
できれば、ベクトル/SIMD 演算に変換できる方法、または GPGPU コードに移動できる方法で。これにより、浮動小数点データでの整数計算の使用が除外されます。
私が興味を持っている素数は 2^7-1 と 2^31-1 ですが、浮動小数点数に対してより効率的な素数があれば、それらは大歓迎です。
このアルゴリズムの使用目的の 1 つは、入力浮動小数点数がアルゴリズムに読み込まれるときに、実行中の「チェックサム」を計算することです。計算機能を使いすぎないようにするために、これを軽量に保ちたいと思います。
どうやら、同様の手法がより大きな数、特に 2^127 - 1 に使用されているようです。残念ながら、この論文の数学は私には理解できず、それをより小さな素数に変換する方法を理解できませんでした。
浮動小数点の例 MOD 2^127 - 1 - HASH127