数学において、無理数基底離散重み付き変換( IBDWT ) は、無理数基底を用いた高速フーリエ変換の変種であり、 1990 年代初頭にリチャード・クランドール(リード大学)、バリー・ファギン(ダートマス大学)、ジョシュア・ドエニアス( NeXT Software ) [ 1 ]によってMathematica を使用して開発されました。これは、現代のコンピュータ上で大規模なモジュラー乗算を高速かつ実用的に実装することを意味し、漸近的には非モジュラーFFT 乗算の2倍の速さです。[ 2 ] [ 3 ]
これは特に、グレートインターネットメルセンヌ素数探索で使用されています。
IBDWT法は、メルセンヌ素数のルーカス・レーマー判定法(メルセンヌ数を法とする繰り返し二乗を必要とする)に適用される。)は、クランドールとフェイギンによって開発された4つの主要な要素に基づいています。[ 4 ]
このアプローチでは、配列をゼロパディングする必要がなくなり、モジュロ乗算を実行します。直接。[ 4 ]積を計算するアルゴリズム内容は以下のとおりです。[ 4 ]
倍精度IBDWTは、Great Internet Mersenne Prime Searchのx86クライアントPrime95で、Lucas–LehmerテストとFermat primaryテストにおけるモジュラ乗算を実行するために使用されています。Prime95のIBDWTライブラリgwnumは、 PrimeGridのLLR2やPRSTなどのプログラムでも使用されています。Pentium 4以降のx86 CPUは倍精度浮動小数点演算能力が非常に高いため、IBDWTを使用して数値を乗算する方が、より単純な整数FFT(NTT)を使用するよりもはるかに高速であるため、IBDWTが選択されています。
倍精度IBDWTは、Glucasの形で他のCPUアーキテクチャにも移植されています。また、CUDALucas、GPUowl、PRPLLの形でGPUにも移植されています。[ 4 ]
IBDWTは、整数演算を法とする2 64 -2 32 +1、つまり数論的変換を用いて行うこともできます。このアプローチは、Nick Craig-WoodがARMPrimeで初めて実証しました。[ 5 ]これもGPUに移植され、倍精度演算能力は低いものの32ビット整数演算能力は許容範囲内のコンシューマー向けGPU、特に2020年代のNvidiaモデル(32ビット整数乗算速度は「1:1」または「1:2」だが、倍精度演算速度は32ビット浮動小数点比で「1:64」)の代替手段となっています。[ 6 ]
GrangerとScottは、IBDWTに着想を得た「GRP(一般化レピュニット素数)乗算」を用いて、F(2 521 -1)上の楕円曲線暗号、すなわちP-521を高速化することを実証した。これはIBDWTに類似した巡回畳み込みを特徴とするカラツバ型技術である。[ 3 ]