From f4dafa64e27e63d8cde5adcfbfa98e2a30fb7504 Mon Sep 17 00:00:00 2001 From: Noobie99 Date: Mon, 5 Feb 2024 22:23:53 +0100 Subject: renamed ntt and bitwiseConv function + more multiply functions --- math/transforms/bitwiseTransforms.cpp | 2 +- math/transforms/multiply.cpp | 12 ------------ math/transforms/multiplyBitwise.cpp | 8 ++++++++ math/transforms/multiplyFFT.cpp | 12 ++++++++++++ math/transforms/multiplyNTT.cpp | 8 ++++++++ math/transforms/ntt.cpp | 2 +- tcr.pdf | Bin 667072 -> 667178 bytes 7 files changed, 30 insertions(+), 14 deletions(-) delete mode 100644 math/transforms/multiply.cpp create mode 100644 math/transforms/multiplyBitwise.cpp create mode 100644 math/transforms/multiplyFFT.cpp create mode 100644 math/transforms/multiplyNTT.cpp diff --git a/math/transforms/bitwiseTransforms.cpp b/math/transforms/bitwiseTransforms.cpp index 7d1f80d..28561da 100644 --- a/math/transforms/bitwiseTransforms.cpp +++ b/math/transforms/bitwiseTransforms.cpp @@ -1,4 +1,4 @@ -void fft(vector& a, bool inv = false) { +void bitwiseConv(vector& a, bool inv = false) { int n = sz(a); for (int s = 1; s < n; s *= 2) { for (int i = 0; i < n; i += 2 * s) { diff --git a/math/transforms/multiply.cpp b/math/transforms/multiply.cpp deleted file mode 100644 index 59c394e..0000000 --- a/math/transforms/multiply.cpp +++ /dev/null @@ -1,12 +0,0 @@ -vector mul(vector& a, vector& b) { - int n = 1 << (__lg(sz(a) + sz(b)) + 1); - vector a2(all(a)), b2(all(b)); - a2.resize(n), b2.resize(n); - fft(a2), fft(b2); - for (int i=0; i ans(n); - for (int i=0; i mul(vector a, vector b) { + int n = 1 << (__lg(max(sz(a), sz(b)) - 1) + 1); + a.resize(n), b.resize(n); + bitwiseConv(a), bitwiseConv(b); + for (int i=0; i mul(vector& a, vector& b) { + int n = 1 << (__lg(sz(a) + sz(b) - 1) + 1); + vector a2(all(a)), b2(all(b)); + a2.resize(n), b2.resize(n); + fft(a2), fft(b2); + for (int i=0; i ans(n); + for (int i=0; i mul(vector a, vector b) { + int n = 1 << (__lg(sz(a) + sz(b) - 1) + 1); + a.resize(n), b.resize(n); + ntt(a), ntt(b); + for (int i=0; i& a, bool inv = false) { +void ntt(vector& a, bool inv = false) { int n = sz(a); auto b = a; ll r = inv ? powMod(root, mod - 2, mod) : root; diff --git a/tcr.pdf b/tcr.pdf index 6404502..e7330c0 100644 Binary files a/tcr.pdf and b/tcr.pdf differ -- cgit v1.2.3