From 009a9b1b085912eb96926597af8e5da96e8b4a9f Mon Sep 17 00:00:00 2001 From: Noobie99 Date: Fri, 2 Feb 2024 19:52:58 +0100 Subject: change fft, ntt and bitwise transforms --- math/transforms/xorTransform.cpp | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'math/transforms/xorTransform.cpp') diff --git a/math/transforms/xorTransform.cpp b/math/transforms/xorTransform.cpp index 48e4df2..f9d1d82 100644 --- a/math/transforms/xorTransform.cpp +++ b/math/transforms/xorTransform.cpp @@ -1,17 +1,10 @@ -void fft(vector& a, bool inverse = 0) { +void fft(vector& a, bool inv = false) { int n = sz(a); - for (int i = 0, j = 1; j < n - 1; ++j) { - for (int k = n >> 1; k > (i ^= k); k >>= 1); - if (j < i) swap(a[i], a[j]); - } for (int s = 1; s < n; s *= 2) { - for (int j = 0; j < n; j+= 2 * s) { - for (int k = 0; k < s; k++) { - ll u = a[j + k], t = a[j + s + k]; - a[j + k] = u + t; - a[j + s + k] = u - t; + for (int i = 0; i < n; i += 2 * s) { + for (int j = i; j < i + s; j++) { + ll& u = a[j], &v = a[j + s]; + tie(u, v) = pair(u + v, u - v); }}} - if (inverse) { - for (ll i = 0; i < n; i++) { - a[i] /= n; -}}} + if (inv) for (ll& x : a) x /= n; +} -- cgit v1.2.3