41 static constexpr size_t LENGTH = domain_end;
60 requires(!has_a0_plus_a1)
64 if constexpr (domain_end == 3) {
75 template <
size_t other_domain_end,
bool other_has_a0_plus_a1 = true>
77 requires(domain_end > other_domain_end)
81 if constexpr (domain_end == 3) {
93 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
102 if constexpr (other_domain_end == 3 && domain_end == 3) {
108 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
117 if constexpr (other_domain_end == 3 && domain_end == 3) {
123 template <
bool other_has_a0_plus_a1>
140 if constexpr (has_a0_plus_a1 && other_has_a0_plus_a1) {
142 }
else if constexpr (has_a0_plus_a1 && !other_has_a0_plus_a1) {
145 }
else if constexpr (!has_a0_plus_a1 && other_has_a0_plus_a1) {
156 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
166 if constexpr (other_domain_end == 3 && domain_end == 3) {
172 template <
size_t other_domain_end,
bool other_has_a0_plus_a1>
182 if constexpr (other_domain_end == 3 && domain_end == 3) {
193 if constexpr (domain_end == 3) {
212 if constexpr (has_a0_plus_a1) {
224 requires(!has_a0_plus_a1)
231 requires(!has_a0_plus_a1)
237 requires(!has_a0_plus_a1)
241 if constexpr (domain_end == 3) {
266 if constexpr (domain_end == 3) {
289template <
typename B,
class Fr,
size_t domain_end,
bool has_a0_plus_a1>
296template <
typename B,
class Fr,
size_t domain_end,
bool has_a0_plus_a1>
306template <
typename T,
size_t N,
bool X>
307struct tuple_size<
bb::UnivariateCoefficientBasis<T, N, X>> : std::integral_constant<std::size_t, N> {};
A view of a univariate, also used to truncate univariates.
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
bool operator==(const UnivariateCoefficientBasis &other) const =delete
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
Storage for polynomial coefficients (always 3 elements for uniform layout).
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 SERIALIZATIO...
void write(auto &buf, const msgpack_concepts::HasMsgPack auto &obj)
Automatically derived write for any object that defines .msgpack() (implicitly defined by SERIALIZATI...
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept