11 #define STATS(value) ((value < 254) ? stats_t<float>(value) : saturated) 13 const unsigned N =
q.size();
15 Q[0] = Q[N + 1] = suppressed;
18 Q[1] =
STATS(
q[0]) / (1 - 2 * x);
20 const double A = 1 - 2 * x;
23 Q[1] = (A * q0 - x *
q1) / (A * A - x * x);
24 Q[2] = (A * q1 - x *
q0) / (A * A - x * x);
27 for (
unsigned i = 0;
i < (N + 1) / 2;
i++) {
28 for (
unsigned j =
i;
j < N -
i;
j++) {
29 const float Cij = inverse(i + 1,
j + 1);
32 Q[j + 1] += Cij *
STATS(
q[i]);
34 Q[N -
i] += Cij *
STATS(
q[N - j - 1]);
36 Q[N -
j] += Cij *
STATS(
q[N - i - 1]);
constexpr bool isNotFinite(T x)
float operator()(const unsigned i, const unsigned j) const
InverseCrosstalkMatrix(const unsigned N, const float x)
static std::vector< stats_t< float > > unfold(const SiStripCluster &q, const float x)
float element(const unsigned, const unsigned) const
const std::vector< uint8_t > & amplitudes() const
Power< A, B >::type pow(const A &a, const B &b)