Open kmyk opened 2 years ago
REP (i, n) REP (j, n) c[i + j] += a[i] * b[j] があったら c = fft(a, b) にするやつ
REP (i, n) REP (j, n) c[i + j] += a[i] * b[j]
c = fft(a, b)
FFT
InverseFFT
Convolution
$ jikka execute ...
runtime/include/jikka/convoluion.hpp
#include "jikka/convolution.hpp"
#include <atcoder/convolution>
foldl (fun c i -> foldl (fun c j -> setAt c (i + j) a[i] b[j]) c (range n)) c (range n)
https://noshi91.hatenablog.com/entry/2020/10/27/175112 の網羅が最終目標です
@hotman78 さんが手伝ってくれそう。とてもありがたい
REP (i, n) REP (j, n) c[i + j] += a[i] * b[j]
があったらc = fft(a, b)
にするやつFFT
InverseFFT
みたいなやつを足す (あるいはConvolution
という組み込み関数を足す?) (Jikka.Core.Language.Expr)$ jikka execute ...
で実行できるようにする (Jikka.Core.Execute)runtime/include/jikka/convoluion.hpp
を足して実装する#include "jikka/convolution.hpp"
とか#include <atcoder/convolution>
されるようにする (Jikka.CPlusPlus.Format)foldl (fun c i -> foldl (fun c j -> setAt c (i + j) a[i] b[j]) c (range n)) c (range n)
やあるいはこれと等価な部分式があれば、それをFFT
を使って書き直すような rewrite rule を足す (Jikka.Core.Convert.FFT みたいなのを足して Jikka.Core.Convert の中から呼び出す)