19 auto to_be_shifted = polys.get_to_be_shifted();
23 for (
size_t i = 0; i < to_be_shifted.size(); i++) {
24 auto& poly = to_be_shifted[i];
30 uint32_t allocated_size = num_rows > 0 ? num_rows - 1 : 0;
45 auto unshifted = polys.get_unshifted();
47 auto& poly = unshifted[i];
49 if (poly.virtual_size() > 0) {
62 auto unshifted = polys.get_unshifted();
65 auto& poly = unshifted[i];
66 Column col = static_cast<Column>(i);
68 trace.visit_column(col, [&](size_t row, const AvmProver::FF& value) {
78 for (
auto [shifted, to_be_shifted] :
zip_view(polys.get_shifted(), polys.get_to_be_shifted())) {
79 shifted = to_be_shifted.shifted();
91 auto& inverse_polynomial = prover_polynomials.
get(
static_cast<ColumnAndShifts>(inverses_col));
92 const auto& src_selector = prover_polynomials.
get(
static_cast<ColumnAndShifts>(src_selector_col));
93 const auto& dst_selector = prover_polynomials.
get(
static_cast<ColumnAndShifts>(dst_selector_col));
95 if (!inverse_polynomial.is_empty()) {
96 throw std::runtime_error(
"Inverse polynomial is expected to be empty at this point.");
99 const size_t num_rows =
std::max<size_t>(src_selector.end_index(), dst_selector.end_index());
100 inverse_polynomial = AvmProver::Polynomial::create_non_parallel_zero_init(num_rows,
MAX_AVM_TRACE_SIZE);
101 assert(prover_polynomials.
get(
static_cast<ColumnAndShifts>(inverses_col)).size() == num_rows);