Skip to content

Commit e0865c7

Browse files
committed
Factor out precalc
1 parent 08744bc commit e0865c7

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

cp-algo/math/cvector.hpp

+18-15
Original file line numberDiff line numberDiff line change
@@ -188,21 +188,24 @@ namespace cp_algo::math::fft {
188188
checkpoint("fft");
189189
}
190190
static constexpr size_t pre_evals = 1 << 16;
191-
static constexpr std::array<size_t, pre_evals> eval_args = []() {
192-
std::array<size_t, pre_evals> res = {};
193-
for(size_t i = 1; i < pre_evals; i++) {
194-
res[i] = res[i >> 1] | (i & 1) << (std::bit_width(i) - 1);
195-
}
196-
return res;
197-
}();
198-
static constexpr std::array<point, pre_evals> evalp = []() {
199-
std::array<point, pre_evals> res = {};
200-
res[0] = 1;
201-
for(size_t n = 1; n < pre_evals; n++) {
202-
res[n] = polar(1., std::numbers::pi * ftype(eval_args[n]) / ftype(4 * std::bit_floor(n)));
203-
}
204-
return res;
205-
}();
191+
static const std::array<size_t, pre_evals> eval_args;
192+
static const std::array<point, pre_evals> evalp;
206193
};
194+
195+
const std::array<size_t, cvector::pre_evals> cvector::eval_args = []() {
196+
std::array<size_t, pre_evals> res = {};
197+
for(size_t i = 1; i < pre_evals; i++) {
198+
res[i] = res[i >> 1] | (i & 1) << (std::bit_width(i) - 1);
199+
}
200+
return res;
201+
}();
202+
const std::array<point, cvector::pre_evals> cvector::evalp = []() {
203+
std::array<point, pre_evals> res = {};
204+
res[0] = 1;
205+
for(size_t n = 1; n < pre_evals; n++) {
206+
res[n] = polar(1., std::numbers::pi * ftype(eval_args[n]) / ftype(4 * std::bit_floor(n)));
207+
}
208+
return res;
209+
}();
207210
}
208211
#endif // CP_ALGO_MATH_CVECTOR_HPP

cp-algo/util/simd.hpp

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ namespace cp_algo {
99
using i64x4 = simd<int64_t, 4>;
1010
using u64x4 = simd<uint64_t, 4>;
1111
using u32x8 = simd<uint32_t, 8>;
12+
using i32x4 = simd<int32_t, 4>;
1213
using u32x4 = simd<uint32_t, 4>;
1314
using dx4 = simd<double, 4>;
1415

0 commit comments

Comments
 (0)