高速乗算法の設計と実装(3)
梅谷 武
作成:2001-09-20 更新:2005-04-20
メルセンヌ素数を標数とする2次体上の離散フーリエ変換を使った32bit算術演算器向け高速乗算法を設計し、Pentiumへの実装を試みる。高速乗算法(2)においては係数を分解したが、高速乗算法(3)は係数を分解しないで計算する。
IMS:20010920001; NDC:412.1; keywords:離散Fourier変換,メルセンヌ素数,2次体;
Step 1. 数のP進表現
基数を
P=232とし、長さを
とする。正の整数
a,bが次のように
P進表現されるものとする。
この積について
0≦ab<PNが成り立つと仮定する。
Step 2. 多項式としての積の計算
PK≡1(mod PN-1)より、
となる。この係数
cr=s+t≡r(mod N)asbtの大きさを評価すると、
となる。
Step 3. 離散フーリエ変換による係数の計算
crは、
(N, ZM89[i], ζ), ζ=(6+i)t, t=290-n(288-1)型の離散Fourier変換を利用して次のように計算する。
| | |
| | |
| | N-1 | N-1 Σ k=0 | F(a)kF(b)kζ-kr | | (in | ZM89[i]) |
|
Step 4. 桁上げ処理
最後にcr, r=0,…,K-1に桁上げ処理を施すことで、c=abのP進表現が得られる。
計算数論
[
N2] 和田 秀男, 高速乗算法と素数判定法, 上智大学数学教室, 1983
[
N7] I. S. Reed, T. K. Truong, The use of finite fields to compute convolution, IEEE Trans.IT-21, 208-213, 1975
[
N8] I. S. Reed, T. K. Truong, Complex integer convolutions over a direct sum of Galois fields, IEEE Trans.IT-21, 657-661, 1975
算法
[
S1] 野下 浩平, 高岡 忠雄, 町田 元, 基本的算法, 岩波書店, 1983
ディジタル信号処理