高速乗算法の設計と実装(2)
梅谷 武
作成:2001-09-12 更新:2005-04-20
メルセンヌ素数を標数とする2次体上の離散フーリエ変換を使った32bit算術演算器向け高速乗算法を設計し、Pentiumへの実装を試みる。
IMS:20010912001; NDC:412.1; keywords:離散Fourier変換,メルセンヌ素数,2次体;
「高速乗算法の設計と実装(1)」(→[
N6])においては素体
Fp上の離散フーリエ変換について考えたが、ここでは一般の有限体上の離散フーリエ変換について考える。
証明 単元群
(Fq)*は位数
q-1の巡回群であるから、その生成元
ζ∈Fqが存在する。
ζは
という性質によって特徴付けられている。一方
1の原始
n乗根
ζnは、
という性質によって特徴付けられている。
n | q - 1のとき、もし生成元
ζ∈Fqが与えられたならば、
とおくことによって一つの
1の原始
n乗根が得られる。証明は群論のラグランジュの定理を単元群
(Fq)*に適用すればよい。
■
1の原始
n乗根
ζnが存在する場合に条件3
について考える。
( | n-1 Σ i=0 | ζnik | )(1 | - | ζnk) | = | 1 | - | ζnkn | = | 0 |
が可換環であるという条件だけで成立するが、ここで
1≠ζnkであるから、すべての
kについて
(1-ζnk)が単元であるとき条件3が満たされることがわかる。体上ではこの条件はつねに満たされる。
定理の形でまとめると次のようになる。
メルセンヌ素数、すなわち、
p | = | 2k | - | 1, | k | = | 2, | 3, | 5, | 7, | 13, | 17, | 19, | 31, | 61, | 89, | 107, | 127, | … |
の形の素数について考える。平方剰余の第1補充法則より
であるから、
-1は
pを法として平方非剰余である。したがって
Fp上の多項式
x2+1は既約であり、剰余環
Fp[x]/(x2+1)は
Fp上2次の拡大体となる。これはガウスの複素整数
Z[i], i2=-1をイデアル
(p)で剰余した
Zp[i]と体として同型である。
Zp[i]の元は、
と表現することができ、加算と乗算は
| | |
| | (ac | - | bd) | + | (bc | + | ad)i, | a,b,c,d∈Zp |
|
という式で計算することができる。
定理
1.2により、
Zp[i]を係数体としたとき、長さ
nの離散フーリエ変換が存在するための必要十分条件は、
である。
メルセンヌ素数
M31=231-1を法とする剰余演算は、32ビット算術演算器で効率よく処理することができる。高速乗算法(2)はこの性質を利用して実装される。離散フーリエ変換の長さ
nとして
なるものが使用できるので当面の目的には十分である。
p=M31とし、
Zp[i]上の離散フーリエ変換を行なうにあたってその原始根を求めなければならない。一般に大きい有限体の原始根を探索することは計算量が多く難しい問題であるが、この場合は、原始根探索プログラムによって比較的簡単に原始根
を発見することができた。
離散フーリエ変換の長さ
Nとしては
という形のものを使うことにする。この
Nは離散フーリエ変換の条件を満たし、さらに原始根
12+iを使って
1の原始
N乗根を
(12+i)t, | t | = | 232-n(230-1), | 0<n≦32 |
と表現することができる。
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. 係数の分解
2つの不等式
より、係数
crを
によって評価する。係数を
M31を法とした場合と
T5を法とした場合の2つに分解する。
Step 4. 離散フーリエ変換による係数の計算
c'rは、
(N, ZM31[i], ω), ω=(12+i)t, t=232-n(230-1)型の離散Fourier変換を利用して次のように計算する。
| | N-1 Σ s=0 | as'ωsk | | (in | ZM31[i]) |
|
| | N-1 Σ t=0 | bt'ωtk | | (in | ZM31[i]) |
|
| | N-1 | N-1 Σ k=0 | F(a')kF(b')kω-kr | | (in | ZM31[i]) |
|
c''rは、
(N, FT5, ζ), ζ=7t, t=232-n(232-1)型の離散Fourier変換を利用して次のように計算する。
| | |
| | |
| | N-1 | N-1 Σ k=0 | F(a'')kF(b'')kζ-kr | | (mod T5) |
|
Step 5. 孫子の剰余定理による連立方程式の解法
(M31, T5)=1であるから、孫子の剰余定理から
crを、連立合同式
を解くことによって求めることができる。
Step 6. 桁上げ処理
最後に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
ディジタル信号処理