20 std::vector<uint8_t> limbs;
21 limbs.reserve(num_limbs);
23 for (uint32_t i = 0; i < num_limbs; i++) {
24 auto [quotient, remainder] = value_integer.
divmod(
static_cast<uint64_t
>(radix));
25 limbs.push_back(
static_cast<uint8_t
>(remainder));
26 value_integer = quotient;
29 return { limbs, value_integer != 0 };
55 uint64_t write_addr_upper_bound =
static_cast<uint64_t
>(
dst_addr) + num_limbs;
60 bool radix_is_lt_2 = radix < 2;
61 bool radix_is_gt_256 = radix > 256;
65 bool invalid_num_limbs = (num_limbs == 0) && !
value.
is_zero();
67 if (dst_out_of_range || radix_is_lt_2 || radix_is_gt_256 || invalid_bitwise_radix || invalid_num_limbs) {
76 std::reverse(limbs.begin(), limbs.end());
77 for (uint32_t i = 0; i < num_limbs; i++) {
85 std::ranges::reverse(limbs);
86 for (uint32_t i = 0; i < num_limbs; i++) {