41 static constexpr size_t LENGTH = domain_end;
57 requires(!has_a0_plus_a1)
61 if constexpr (domain_end == 3) {
72 template <
size_t other_domain_end,
bool other_has_a0_plus_a1 = true>
74 requires(domain_end > other_domain_end)
78 if constexpr (domain_end == 3) {
86 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
95 if constexpr (other_domain_end == 3 && domain_end == 3) {
101 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
110 if constexpr (other_domain_end == 3 && domain_end == 3) {
116 template <
bool other_has_a0_plus_a1>
133 if constexpr (has_a0_plus_a1 && other_has_a0_plus_a1) {
135 }
else if constexpr (has_a0_plus_a1 && !other_has_a0_plus_a1) {
138 }
else if constexpr (!has_a0_plus_a1 && other_has_a0_plus_a1) {
149 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
159 if constexpr (other_domain_end == 3 && domain_end == 3) {
165 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
175 if constexpr (other_domain_end == 3 && domain_end == 3) {
186 if constexpr (domain_end == 3) {
205 if constexpr (has_a0_plus_a1) {
217 requires(!has_a0_plus_a1)
224 requires(!has_a0_plus_a1)
230 requires(!has_a0_plus_a1)
234 if constexpr (domain_end == 3) {
259 if constexpr (domain_end == 3) {
282template <
typename B,
class Fr,
size_t domain_end,
bool has_a0_plus_a1>
289template <
typename B,
class Fr,
size_t domain_end,
bool has_a0_plus_a1>
299template <
typename T,
size_t N,
bool X>
300struct tuple_size<
bb::UnivariateCoefficientBasis<T, N, X>> : std::integral_constant<std::size_t, N> {};
A view of a univariate, also used to truncate univariates.
bool operator==(const UnivariateCoefficientBasis &other) const =default
friend std::ostream & operator<<(std::ostream &os, const UnivariateCoefficientBasis &u)
UnivariateCoefficientBasis & operator=(const UnivariateCoefficientBasis &other)=default
UnivariateCoefficientBasis< Fr, domain_end, false > operator-(const Fr &scalar) const
UnivariateCoefficientBasis()=default
static constexpr size_t LENGTH
UnivariateCoefficientBasis(const UnivariateCoefficientBasis< Fr, other_domain_end, other_has_a0_plus_a1 > &other)
UnivariateCoefficientBasis< Fr, domain_end, false > & operator*=(const Fr &scalar)
UnivariateCoefficientBasis(UnivariateCoefficientBasis &&other) noexcept=default
UnivariateCoefficientBasis< Fr, 3, false > sqr() const
UnivariateCoefficientBasis(const UnivariateCoefficientBasis< Fr, domain_end, true > &other)
UnivariateCoefficientBasis & operator+=(const Fr &scalar)
UnivariateCoefficientBasis< Fr, domain_end, false > operator+(const UnivariateCoefficientBasis< Fr, other_domain_end, other_has_a0_plus_a1 > &other) const
std::array< Fr, 3 > coefficients
coefficients is a length-3 array with the following representation:
UnivariateCoefficientBasis< Fr, domain_end, false > & operator+=(const UnivariateCoefficientBasis< Fr, other_domain_end, other_has_a0_plus_a1 > &other)
UnivariateCoefficientBasis< Fr, domain_end, false > operator-() const
UnivariateCoefficientBasis & operator-=(const Fr &scalar)
UnivariateCoefficientBasis & operator=(UnivariateCoefficientBasis &&other) noexcept=default
UnivariateCoefficientBasis(const UnivariateCoefficientBasis &other)=default
UnivariateCoefficientBasis< Fr, domain_end, false > & operator-=(const UnivariateCoefficientBasis< Fr, other_domain_end, other_has_a0_plus_a1 > &other)
UnivariateCoefficientBasis< Fr, 3, false > operator*(const UnivariateCoefficientBasis< Fr, domain_end, other_has_a0_plus_a1 > &other) const
UnivariateCoefficientBasis< Fr, domain_end, false > operator*(const Fr &scalar) const
UnivariateCoefficientBasis< Fr, domain_end, false > operator-(const UnivariateCoefficientBasis< Fr, other_domain_end, other_has_a0_plus_a1 > &other) const
~UnivariateCoefficientBasis()=default
UnivariateCoefficientBasis< Fr, domain_end, false > operator+(const Fr &scalar) const
Entry point for Barretenberg command-line interface.
void read(B &it, field2< base_field, Params > &value)
void write(B &buf, field2< base_field, Params > const &value)
void read(auto &it, msgpack_concepts::HasMsgPack auto &obj)
Automatically derived read for any object that defines .msgpack() (implicitly defined by MSGPACK_FIEL...
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by MSGPACK_FIE...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept