32 if (
shard ==
nullptr) {
49 if (
shard !=
nullptr) {
60 return *
fresh.release();
80 if (
shard !=
nullptr) {
88 for (
const auto& [
col,
value] : values) {
122 if (!rows[
off].is_zero()) {
123 return base +
off + 1;
189 FF::batch_invert<RefVector<FF>>(
ff_vector);
#define BB_ASSERT_LT(left, right,...)
A template class for a reference vector. Behaves as if std::vector<T&> was possible.
static constexpr size_t num_columns()
const FF & get(Column col, uint32_t row) const
static constexpr size_t NUM_SHARDS
void reserve_column(Column col, size_t size)
uint32_t get_num_rows() const
uint32_t get_num_witness_rows() const
const FF & get_column_or_shift(ColumnAndShifts col, uint32_t row) const
void invert_columns(std::span< const Column > cols)
static ColumnInterval & get_or_create_shard(SparseColumn &column_data, size_t shard_idx)
void visit_column(Column col, const std::function< void(uint32_t, const FF &)> &visitor) const
uint32_t get_column_rows(Column col) const
void set(Column col, uint32_t row, const FF &value)
static constexpr uint32_t INTERVAL_SIZE
void invert_column(Column col)
void clear_column(Column col)
bool is_shift(ColumnAndShifts c)
std::optional< Column > unshift_column(ColumnAndShifts c)
constexpr auto WITNESS_END_IDX
constexpr auto WITNESS_START_IDX
constexpr auto NUM_COLUMNS_WITHOUT_SHIFTS
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::array< FF, INTERVAL_SIZE > rows
BB_INLINE constexpr bool is_zero() const noexcept
static constexpr field zero()