22 std::vector<uint8_t> limbs;
23 limbs.reserve(num_limbs);
25 for (uint32_t i = 0; i < num_limbs; i++) {
26 auto [quotient, remainder] = value_integer.
divmod(radix_integer);
27 limbs.push_back(
static_cast<uint8_t
>(remainder));
28 value_integer = quotient;
31 return { limbs, value_integer != 0 };
57 uint64_t max_write_address =
static_cast<uint64_t
>(
dst_addr) + num_limbs - 1;
62 bool radix_is_lt_2 = radix < 2;
63 bool radix_is_gt_256 = radix > 256;
65 bool invalid_bitwise_radix = is_output_bits && (radix != 2);
67 bool invalid_num_limbs = (num_limbs == 0) && !
value.
is_zero();
69 if (dst_out_of_range || radix_is_lt_2 || radix_is_gt_256 || invalid_bitwise_radix || invalid_num_limbs) {
78 std::reverse(limbs.begin(), limbs.end());
79 for (uint32_t i = 0; i < num_limbs; i++) {
87 std::ranges::reverse(limbs);
88 for (uint32_t i = 0; i < num_limbs; i++) {