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);
67TEST(FqConstants, CubeRootOfUnity)
72 EXPECT_EQ(beta * beta * beta,
fq::one());
80TEST(FqConstants, WasmModulusConsistency)
91 for (
size_t i = 0; i < 9; i++) {
92 wasm_modulus +=
uint512_t(wasm_limbs[i]) << (29UL * i);
94 EXPECT_LT(wasm_limbs[i], uint64_t(1) << 29);
97 EXPECT_EQ(wasm_modulus.
lo, native_q);
106 uint512_t R_wasm_mod_q = R_wasm % native_q;
107 uint512_t expected_r_squared_wasm = (R_wasm_mod_q * R_wasm_mod_q) % native_q;
114 EXPECT_EQ(expected_r_squared_wasm.
lo, actual_r_squared_wasm);
117TEST(FqConstants, WasmCubeRootConsistency)
140 EXPECT_EQ(expected_cube_root_wasm.
lo, cube_root_wasm);
144TEST(FqConstants, WasmRInvLessThanModulus)
154 for (
size_t i = 0; i < 9; i++) {
155 r_inv_wasm +=
uint512_t(r_inv_wasm_limbs[i]) << (29UL * i);
157 EXPECT_LT(r_inv_wasm_limbs[i], uint64_t(1) << 29);
161 EXPECT_LT(r_inv_wasm,
uint512_t(native_q) / 2);
177 from_decimal(
"21888242871839275222246405745257275088548364400416034343698204186575808495617");
178 EXPECT_EQ(expected_r, native_r);
185 uint512_t expected_r_sqr_mod_r = (R * R) % native_r;
189 EXPECT_EQ(expected_r_sqr_mod_r.
lo, actual_r_sqr_mod_r);
197 uint256_t r_inv = neg_r.invmod(two_64).lo;
198 uint64_t expected = r_inv.
data[0];
200 EXPECT_EQ(result, expected);
203TEST(FrConstants, CubeRootOfUnity)
208 EXPECT_EQ(beta * beta * beta,
fr::one());
216TEST(FrConstants, WasmModulusConsistency)
226 for (
size_t i = 0; i < 9; i++) {
227 wasm_modulus +=
uint512_t(wasm_limbs[i]) << (29UL * i);
228 EXPECT_LT(wasm_limbs[i], uint64_t(1) << 29);
231 EXPECT_EQ(wasm_modulus.
lo, native_r);
239 uint512_t R_wasm_mod_r = R_wasm % native_r;
240 uint512_t expected_r_squared_wasm = (R_wasm_mod_r * R_wasm_mod_r) % native_r;
247 EXPECT_EQ(expected_r_squared_wasm.
lo, actual_r_squared_wasm);
250TEST(FrConstants, WasmCubeRootConsistency)
266 EXPECT_EQ(expected_cube_root_wasm.
lo, cube_root_wasm);
271TEST(FrConstants, WasmRInvLessThanModulus)
281 for (
size_t i = 0; i < 9; i++) {
282 r_inv_wasm +=
uint512_t(r_inv_wasm_limbs[i]) << (29UL * i);
284 EXPECT_LT(r_inv_wasm_limbs[i], uint64_t(1) << 29);
288 EXPECT_LT(r_inv_wasm,
uint512_t(native_r) / 2);
static constexpr uint64_t cube_root_wasm_1
static constexpr uint64_t modulus_0
static constexpr uint64_t r_inv_wasm_6
static constexpr uint64_t r_inv_wasm_4
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_inv_wasm_8
static constexpr uint64_t r_inv_wasm_2
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 r_inv_wasm_0
static constexpr uint64_t cube_root_wasm_0
static constexpr uint64_t r_inv_wasm_7
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_inv_wasm_3
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 r_inv_wasm_5
static constexpr uint64_t cube_root_3
static constexpr uint64_t r_inv_wasm_1
static constexpr uint64_t modulus_wasm_6
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_inv
static constexpr uint64_t r_inv_wasm_0
static constexpr uint64_t modulus_wasm_8
static constexpr uint64_t r_inv
static constexpr uint64_t modulus_wasm_3
static constexpr uint64_t r_inv_wasm_2
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_inv_wasm_7
static constexpr uint64_t r_squared_3
static constexpr uint64_t r_inv_wasm_8
static constexpr uint64_t modulus_0
static constexpr uint64_t r_squared_1
static constexpr uint64_t r_inv_wasm_6
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_inv_wasm_4
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 r_inv_wasm_3
static constexpr uint64_t modulus_wasm_2
static constexpr uint64_t modulus_wasm_1
static constexpr uint64_t r_inv_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
static constexpr uint64_t r_inv_wasm_5
uintx< uint256_t > uint512_t
Entry point for Barretenberg command-line interface.
TEST(BoomerangMegaCircuitBuilder, BasicCircuit)
static constexpr field cube_root_of_unity()
static constexpr field one()