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の出番.

アルゴリズムの概観

  1. から 点を賢く選ぶ
  2. を計算
  3. も同様に
  4. を計算
  5. 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

のとき

を用いて


より