src/math/sum_ik_flist/lib.hpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #pragma once | ||
| 2 | |||
| 3 | #include "../../util/util/lib.hpp" | ||
| 4 | |||
| 5 | namespace tifa_libs { | ||
| 6 | |||
| 7 | template <class T> | ||
| 8 | 37014972 | CEXP T sum_i0(T n) NE { return n; } | |
| 9 | template <class T> | ||
| 10 | 37015104 | CEXP T sum_i1(T n) NE { return n * (n + 1) / 2; } | |
| 11 | template <class T> | ||
| 12 | 36 | CEXP T sum_i2(T n) NE { return sum_i1(n) * (n * 2 + 1) / 3; } | |
| 13 | template <class T> | ||
| 14 | 48 | CEXP T sum_i3(T n) NE { | |
| 15 | 48 | const auto _ = sum_i1(n); | |
| 16 | 48 | return _ * _; | |
| 17 | 48 | } | |
| 18 | template <class T> | ||
| 19 | 12 | CEXP T sum_i4(T n) NE { return sum_i2(n) * (sum_i1(n) * 6 - 1) / 5; } | |
| 20 | template <class T> | ||
| 21 | 24 | CEXP T sum_i5(T n) NE { return sum_i3(n) * (sum_i1(n) * 4 - 1) / 3; } | |
| 22 | template <class T> | ||
| 23 | 12 | CEXP T sum_i6(T n) NE { | |
| 24 | 12 | const auto _ = sum_i1(n); | |
| 25 | 12 | return sum_i2(n) * (_ * (_ * 2 - 1) * 6 + 1) / 7; | |
| 26 | 12 | } | |
| 27 | template <class T> | ||
| 28 | 12 | CEXP T sum_i7(T n) NE { | |
| 29 | 12 | const auto _ = sum_i3(n); | |
| 30 | 12 | return _ * _ * 2 - sum_i5(n); | |
| 31 | 12 | } | |
| 32 | |||
| 33 | template <class T> | ||
| 34 | // NOLINTNEXTLINE(modernize-avoid-c-arrays) | ||
| 35 | CEXP T (*sum_ik[])(T) NE = {sum_i0<T>, sum_i1<T>, sum_i2<T>, sum_i3<T>, sum_i4<T>, sum_i5<T>, sum_i6<T>, sum_i7<T>}; | ||
| 36 | |||
| 37 | } // namespace tifa_libs | ||
| 38 |