8#include "../circuit_builders/circuit_builders_fwd.hpp"
9#include "../witness/witness.hpp"
38template <
typename Curve,
size_t virtual_log_n = CONST_PROOF_SIZE_LOG_N>
44 using Data = BarycentricDataRunTime<
Fr, virtual_log_n, 1>;
46 std::vector<Fr> result(virtual_log_n);
49 std::vector<Fr> prefix(virtual_log_n,
Fr{ 1 });
50 for (
size_t i = 1; i < virtual_log_n; ++i) {
51 prefix[i] = prefix[i - 1] * (log_n -
Fr{ 1 } - Data::big_domain[i - 1]);
58 std::vector<Fr> suffix(virtual_log_n + 1,
Fr(1));
59 for (
size_t i = virtual_log_n; i > 0; i--) {
60 suffix[i - 1] = suffix[i] * (log_n -
Fr{ 1 } - Data::big_domain[i - 1]);
66 suffix[0].assert_equal(
Fr{ 0 });
72 for (
size_t i = 0; i < virtual_log_n; ++i) {
73 result[i] = Data::precomputed_denominator_inverses[i] * prefix[i] * suffix[i + 1];
76 for (
size_t idx = virtual_log_n - 1; idx > 0; idx--) {
78 result[idx - 1] += result[idx];
static constexpr bool is_stdlib_type
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept