Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
fake_to_radix.cpp
Go to the documentation of this file.
2
6
7#include <algorithm>
8#include <cstdint>
9#include <vector>
10
11namespace bb::avm2::simulation {
12
13std::vector<uint8_t> FakeToRadix::to_le_radix(const FF& value, uint32_t num_limbs, uint32_t radix)
14{
15 uint256_t value_integer = static_cast<uint256_t>(value);
16 auto limbs = std::vector<uint8_t>();
17 limbs.reserve(num_limbs);
18
19 while (value_integer > 0) {
20 limbs.push_back(static_cast<uint8_t>(value_integer % radix));
21 value_integer /= radix;
22 }
23
24 if (num_limbs > limbs.size()) {
25 limbs.insert(limbs.end(), num_limbs - limbs.size(), 0);
26 }
27 return limbs;
28}
29std::vector<bool> FakeToRadix::to_le_bits(const FF& value, uint32_t num_limbs)
30{
31 std::vector<uint8_t> limbs = to_le_radix(value, num_limbs, 2);
32 std::vector<bool> bits(limbs.size());
33
34 std::transform(limbs.begin(), limbs.end(), bits.begin(), [](uint8_t val) {
35 return val != 0; // Convert nonzero values to `true`, zero to `false`
36 });
37 return bits;
38}
39
40} // namespace bb::avm2::simulation
std::vector< bool > to_le_bits(const FF &value, uint32_t num_limbs) override
std::vector< uint8_t > to_le_radix(const FF &value, uint32_t num_limbs, uint32_t radix) override
AvmFlavorSettings::FF FF
Definition field.hpp:10