21inline void store_per_limb(
FF& cell,
const FF&
value)
23 static_assert(
sizeof(
FF) == 4 *
sizeof(uint64_t));
24 for (
size_t i = 0; i < 4; ++i) {
43 if (
shard ==
nullptr) {
60 if (
shard !=
nullptr) {
71 return *
fresh.release();
97 if (
shard !=
nullptr) {
109 for (
const auto& [
col,
value] : values) {
145 if (!rows[
off].is_zero()) {
146 return base +
off + 1;
212 FF::batch_invert<RefVector<FF>>(
ff_vector);
#define BB_ASSERT_LTE(left, right,...)
#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 set(Column col, uint32_t row, const FF &value, bool use_atomic_limbs=false)
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
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 std::size_t MAX_AVM_TRACE_SIZE
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()