Motivation
TFHEの実装眺めていたらFFTが使われていた.
整数多項式で高速フーリエ変換(FFT)
2多項式の積
のとき
ただし .
Example
E.g., multiply (x^2 + 2x + 3)(2x^2 + 5) =
2x^2 + 0x + 5
1x^2 + 2x + 3
-------------
6 0 15
4 0 10
2 0 5
----------------------------
2x^4 + 4x^3 + 11x^2 +10x+15
これを と の畳み込み(Convolution) といい、 と表す. 素朴な計算量は
フーリエ変換と畳込み理論
関数 , の畳み込みはフーリエ変換 とするとpoint-wise multiplicationに書き換えられる(後述).
多項式(polynomials)の表現
多項式は係数表現とpoint-value representation があります.
point-value form
次多項式は最低 個の異なる点として表すことができる.
は以下のように表される.
- n個のペア
- s.t
- s.t.
point-value form では は for any point
が 次元以下(degree-bound ‘n’)の時 は 次となるので の点を 個に増やす.
Example
,
の7個の係数が必要
これが point-wise multiplication, 計算量は
とは
計算量の上界 と下界 が一致する時, e.g.
逆に点集合から多項式を求めることを 補完(iterpolation) という.

係数表現とpoint-value representationの高速な変換が必要. FFTの出番.
アルゴリズムの概観
- から 点を賢く選ぶ
- を計算
- も同様に
- で を計算
- Cから係数を補完
- 手順2, 3は かかりそうだがFFTで高速化可能
- 賢く: root of unity から 点選ばないとだめ
迂回: 1の冪根(Roots of unity)
複数回かけて なる数のこと. 1以外の Roots of unity は複素数
複素数

FFTは以下の性質を使う
離散フーリエ変換(DFT)
目的は 点()の を で評価すること
クーリー–テューキー型FFTアルゴリズム
Examples
,
, vec:
奇数と偶数で分ける.
,
多項式表現では
次元は , でA(x), A(-x) は次のようにかける.
1つの 次多項式を計算する代わりに 次多項式を2つ計算することになる.(分割統治法)
再帰的にできるので
Example
のとき
を用いて
より