この記事は、高速フーリエ変換の1つのバリエーションである、Numeric Theory Translation(数論変換)の詳しい解説記事です。 あまりなかったので書きました。 数論変換にありがちな なんで$10^9 + 7$じゃダメなのか 原始根って何? とかについてもこれを見ればわかります。 前提知識としては、Fast Fourier Translation(高速フーリエ変換)が必要です。 kaage大先生のQiita記事とかは中高生にもわかりやすく書かれています。 下に一応自分の勉強ノートを載せます。(上の記事の行間を埋めた感じです) では、数論変換について説明したいと思います。 高速フーリエ変換の弱点 高速フーリエ変換は正しいですが、弱点として精度が足りないというのがあります。 なぜならば、複素数の1の$2^m$乗根は計算上ではれっきとした64bit倍精度浮動小数点のdoubleの
![NTT(数論変換)のやさしい解説 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/da4a8300b20b0935d04c46449d0e8076108feddd/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9TlRUJTI4JUU2JTk1JUIwJUU4JUFCJTk2JUU1JUE0JTg5JUU2JThGJTlCJTI5JUUzJTgxJUFFJUUzJTgyJTg0JUUzJTgxJTk1JUUzJTgxJTk3JUUzJTgxJTg0JUU4JUE3JUEzJUU4JUFBJUFDJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz0wOTNmOTA5ODM2MzZjZDEwYTI5N2Q1NTBkYWViMTY0Yg%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBTZW5fY29tcCZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9YTYyYWMxYzdlOGQ5NmU1M2E1NTU3ODkxMDQzYmNiZWM%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Ddd43d7b007a6b52720658893a3ab4763)