16 using Real = std::conditional_t<std::is_same_v<T, std::complex<float>>, float,
17 std::conditional_t<std::is_same_v<T, std::complex<double>>, double, T>>;
18 constexpr bool kComplex = !std::is_same_v<T, Real>;
19 const std::size_t P = C < 32 ? C : 32;
20 const std::size_t rot = C / 2 > 0 ? C / 2 : 1;
21 const std::size_t tile = (C + 1) * C;
22 const std::size_t per_prob = (want_vectors ? 2 : 1) * tile *
sizeof(T) + C *
sizeof(Real) +
23 2 * rot *
sizeof(Real) + (kComplex ? rot *
sizeof(T) : 0) + C *
sizeof(std::int16_t);
24 return (32 / P) * per_prob + (C - 1) * rot *
sizeof(std::int16_t);