8#include "../circuit_builders/circuit_builders_fwd.hpp"
9#include "../witness/witness.hpp"
39template <
typename Curve,
size_t virtual_log_n = CONST_PROOF_SIZE_LOG_N>
45 using Data = BarycentricDataRunTime<
Fr, virtual_log_n, 1>;
47 std::vector<Fr> result(virtual_log_n);
50 std::vector<Fr> prefix(virtual_log_n,
Fr{ 1 });
51 for (
size_t i = 1; i < virtual_log_n; ++i) {
52 prefix[i] = prefix[i - 1] * (log_n -
Fr{ 1 } - Data::big_domain[i - 1]);
59 std::vector<Fr> suffix(virtual_log_n + 1,
Fr(1));
60 for (
size_t i = virtual_log_n; i > 0; i--) {
61 suffix[i - 1] = suffix[i] * (log_n -
Fr{ 1 } - Data::big_domain[i - 1]);
67 suffix[0].assert_equal(
Fr{ 0 });
73 for (
size_t i = 0; i < virtual_log_n; ++i) {
74 result[i] = Data::precomputed_denominator_inverses[i] * prefix[i] * suffix[i + 1];
77 for (
size_t idx = virtual_log_n - 1; idx > 0; idx--) {
79 result[idx - 1] += result[idx];
86 for (
auto& indicator : result) {
87 indicator.clear_round_provenance();
static constexpr bool is_stdlib_type
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
This file contains part of the logic for the Origin Tag mechanism that tracks the use of in-circuit p...