11#include <gtest/gtest.h>
23uint256_t from_decimal(
const std::string& dec_str)
26 for (
char c : dec_str) {
27 result = result * 10 +
static_cast<uint64_t
>(c -
'0');
41 from_decimal(
"21888242871839275222246405745257275088696311157297823662689037894645226208583");
42 EXPECT_EQ(expected_q, native_q);
49 uint512_t expected_r_sqr_mod_q = (R * R) % native_q;
53 EXPECT_EQ(expected_r_sqr_mod_q.
lo, actual_r_sqr_mod_q);
62 uint64_t expected = q_inv.
data[0];
64 EXPECT_EQ(result, expected);
69TEST(FqConstants, MultiplicativeGenerator)
74TEST(FqConstants, CubeRootOfUnity)
80 fq expected_beta = g.pow(exponent);
83 EXPECT_EQ(beta, expected_beta);
86 EXPECT_EQ(beta * beta * beta,
fq::one());
94TEST(FqConstants, WasmModulusConsistency)
105 for (
size_t i = 0; i < 9; i++) {
106 wasm_modulus +=
uint512_t(wasm_limbs[i]) << (29UL * i);
108 EXPECT_LT(wasm_limbs[i], uint64_t(1) << 29);
111 EXPECT_EQ(wasm_modulus.
lo, native_q);
120 uint512_t R_wasm_mod_q = R_wasm % native_q;
121 uint512_t expected_r_squared_wasm = (R_wasm_mod_q * R_wasm_mod_q) % native_q;
128 EXPECT_EQ(expected_r_squared_wasm.
lo, actual_r_squared_wasm);
131TEST(FqConstants, WasmCubeRootConsistency)
154 EXPECT_EQ(expected_cube_root_wasm.
lo, cube_root_wasm);
170 from_decimal(
"21888242871839275222246405745257275088548364400416034343698204186575808495617");
171 EXPECT_EQ(expected_r, native_r);
178 uint512_t expected_r_sqr_mod_r = (R * R) % native_r;
182 EXPECT_EQ(expected_r_sqr_mod_r.
lo, actual_r_sqr_mod_r);
190 uint256_t r_inv = neg_r.invmod(two_64).lo;
191 uint64_t expected = r_inv.
data[0];
193 EXPECT_EQ(result, expected);
196TEST(FrConstants, MultiplicativeGenerator)
201TEST(FrConstants, CubeRootOfUnity)
206 fr expected_beta = g.pow(exponent);
209 EXPECT_EQ(beta, expected_beta);
212 EXPECT_EQ(beta * beta * beta,
fr::one());
220TEST(FrConstants, WasmModulusConsistency)
230 for (
size_t i = 0; i < 9; i++) {
231 wasm_modulus +=
uint512_t(wasm_limbs[i]) << (29UL * i);
232 EXPECT_LT(wasm_limbs[i], uint64_t(1) << 29);
235 EXPECT_EQ(wasm_modulus.
lo, native_r);
243 uint512_t R_wasm_mod_r = R_wasm % native_r;
244 uint512_t expected_r_squared_wasm = (R_wasm_mod_r * R_wasm_mod_r) % native_r;
251 EXPECT_EQ(expected_r_squared_wasm.
lo, actual_r_squared_wasm);
254TEST(FrConstants, WasmCubeRootConsistency)
270 EXPECT_EQ(expected_cube_root_wasm.
lo, cube_root_wasm);
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t modulus_0
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t r_squared_3
static constexpr uint64_t r_squared_2
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t modulus_3
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t modulus_1
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t r_squared_0
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t modulus_2
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_squared_1
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t cube_root_1
static constexpr uint64_t cube_root_0
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t cube_root_2
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t cube_root_3
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_inv
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_inv
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t modulus_wasm_4
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t cube_root_wasm_3
static constexpr uint64_t r_squared_wasm_3
static constexpr uint64_t r_squared_3
static constexpr uint64_t modulus_0
static constexpr uint64_t r_squared_1
static constexpr uint64_t cube_root_3
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t modulus_wasm_0
static constexpr uint64_t cube_root_1
static constexpr uint64_t r_squared_wasm_1
static constexpr uint64_t r_squared_0
static constexpr uint64_t r_squared_2
static constexpr uint64_t cube_root_0
static constexpr uint64_t modulus_3
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t modulus_wasm_5
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t cube_root_2
static constexpr uint64_t r_squared_wasm_0
static constexpr uint64_t r_squared_wasm_2
static constexpr uint64_t modulus_wasm_7
static constexpr uint64_t modulus_2
static constexpr uint64_t cube_root_wasm_2
static constexpr uint64_t modulus_1
uintx< uint256_t > uint512_t
Entry point for Barretenberg command-line interface.
field< Bn254FqParams > fq
field< Bn254FrParams > fr
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
static constexpr field cube_root_of_unity()
static constexpr field one()
static constexpr field multiplicative_generator() noexcept