31 return T::Params::NUM_BN254_SCALARS;
33 return 2 * calc_num_bn254_frs<typename T::Fq>();
36 return calc_num_bn254_frs<typename T::value_type>() * (std::tuple_size<T>::value);
53 return calc_num_bn254_frs<typename T::value_type>() * (std::tuple_size<T>::value);
74 return static_cast<bool>(fr_vec[0]);
77 return static_cast<T
>(fr_vec[0]);
82 using BaseField =
typename T::Fq;
83 constexpr size_t BASE_FIELD_SCALAR_SIZE = calc_num_bn254_frs<BaseField>();
86 val.x = convert_from_bn254_frs<BaseField>(fr_vec.subspan(0, BASE_FIELD_SCALAR_SIZE));
87 val.y = convert_from_bn254_frs<BaseField>(fr_vec.subspan(BASE_FIELD_SCALAR_SIZE, BASE_FIELD_SCALAR_SIZE));
88 if (val.x == BaseField::zero() && val.y == BaseField::zero()) {
89 val.self_set_infinity();
96 constexpr size_t FieldScalarSize = calc_num_bn254_frs<typename T::value_type>();
97 BB_ASSERT_EQ(fr_vec.size(), FieldScalarSize * std::tuple_size<T>::value);
100 x = convert_from_bn254_frs<typename T::value_type>(fr_vec.subspan(FieldScalarSize * i, FieldScalarSize));
110 BB_ASSERT_EQ(uint256_vec.size(),
static_cast<size_t>(1));
111 return static_cast<bool>(uint256_vec[0]);
113 BB_ASSERT_EQ(uint256_vec.size(),
static_cast<size_t>(1));
114 return static_cast<T
>(uint256_vec[0]);
116 using BaseField =
typename T::Fq;
117 constexpr size_t NUMBER_OF_ELEMENTS = calc_num_uint256_ts<BaseField>();
118 BB_ASSERT_EQ(uint256_vec.size(), 2 * NUMBER_OF_ELEMENTS);
120 val.x = convert_from_uint256_ts<BaseField>(uint256_vec.subspan(0, NUMBER_OF_ELEMENTS));
121 val.y = convert_from_uint256_ts<BaseField>(uint256_vec.subspan(NUMBER_OF_ELEMENTS, NUMBER_OF_ELEMENTS));
122 if (val.x == BaseField::zero() && val.y == BaseField::zero()) {
123 val.self_set_infinity();
130 constexpr size_t ElementSize = calc_num_uint256_ts<typename T::value_type>();
131 BB_ASSERT_EQ(uint256_vec.size(), ElementSize * std::tuple_size<T>::value);
133 for (
auto& x : val) {
134 x = convert_from_uint256_ts<typename T::value_type>(uint256_vec.subspan(ElementSize * i, ElementSize));
160 using BaseField =
typename T::Fq;
166 if (val.is_point_at_infinity()) {
174 fr_vec.insert(fr_vec.end(), fr_vec_y.begin(), fr_vec_y.end());
179 for (
auto& x : val) {
181 fr_vec.insert(fr_vec.end(), tmp_vec.begin(), tmp_vec.end());
202 using BaseField =
typename T::Fq;
208 if (val.is_point_at_infinity()) {
216 uint256_vec.insert(uint256_vec.end(), uint256_vec_y.begin(), uint256_vec_y.end());
221 for (
auto& x : val) {
223 uint256_vec.insert(uint256_vec.end(), tmp_vec.begin(), tmp_vec.end());
#define BB_ASSERT_EQ(actual, expected,...)
#define ASSERT(expression,...)
std::vector< bb::fr > convert_to_bn254_frs(const T &val)
Conversion from transcript values to bb::frs.
std::vector< bb::fr > convert_grumpkin_fr_to_bn254_frs(const grumpkin::fr &val)
Converts grumpkin::fr to 2 bb::fr elements.
constexpr size_t calc_num_uint256_ts()
Calculates the size of a types in terms of uint256_t.
T convert_from_bn254_frs(std::span< const bb::fr > fr_vec)
Conversions from vector of bb::fr elements to transcript types.
constexpr size_t calc_num_bn254_frs()
Calculates the size of a types in terms of bb::frs.
T convert_challenge(const bb::fr &challenge)
T convert_from_uint256_ts(std::span< const uint256_t > uint256_vec)
grumpkin::fr convert_to_grumpkin_fr(const bb::fr &f)
grumpkin::fr convert_grumpkin_fr_from_bn254_frs(std::span< const bb::fr > fr_vec)
Converts 2 bb::fr elements to grumpkin::fr.
std::vector< uint256_t > convert_to_uint256(const T &val)
Conversion from transcript values to bb::frs.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept