FMTはFFTとほぼ同じ…とか考えていたら混乱しそうだったので自分なりにまとめ直し.
2段階FMTを,並列計算機(ノード内並列あり)で考え直す.
上位FMT
有限体FFTとかFFT(Fast Fermat Transform)など言われるもの.
1要素を64bit整数の配列に格納する.
回転子ωはビットシフトでできる.要素を超える大きさまでシフトされた分は下位桁へ負巡回.
FMTルーチンとしては4基底とか作る必要もなく2基底で十分.
FMTした後の,要素ごとの積は下位FMTを使う.
下位FMT
元の格納形式は上位と同じ64bit整数.1要素は1個の64bit整数.
積は 64bit整数1個→倍精度浮動小数4個に分割 をして要素数4倍にしてから
FFT(Real2Complex)→要素(Complex)ごとの積→逆FFT(Complex2Real)
で可能.
FFT以外の部分で加減算は行わないのでそれは考えない.