21 std::vector<uint8_t> limbs;
22 limbs.reserve(num_limbs);
24 for (uint32_t i = 0; i < num_limbs; i++) {
25 auto [quotient, remainder] = value_integer.
divmod(
static_cast<uint64_t
>(radix));
26 limbs.push_back(
static_cast<uint8_t
>(remainder));
27 value_integer = quotient;
30 return { limbs, value_integer != 0 };
56 uint64_t write_addr_upper_bound =
static_cast<uint64_t
>(
dst_addr) + num_limbs;
61 bool radix_is_lt_2 = radix < 2;
62 bool radix_is_gt_256 = radix > 256;
66 bool invalid_num_limbs = (num_limbs == 0) && !
value.
is_zero();
68 if (dst_out_of_range || radix_is_lt_2 || radix_is_gt_256 || invalid_bitwise_radix || invalid_num_limbs) {
77 std::reverse(limbs.begin(), limbs.end());
78 for (uint32_t i = 0; i < num_limbs; i++) {
86 std::ranges::reverse(limbs);
87 for (uint32_t i = 0; i < num_limbs; i++) {