66void mpz_pow_mpz(mpz_t& r,
const mpz_t& b,
const mpz_t& e);
75void mpz_divide_mpq(mpq_t& r,
const mpz_t& k);
84void mpq_divide_mpq(mpq_t& r1,
const mpq_t& r2);
93void operate_power(mpq_t& r, uint64_t p);
102void operate_power(mpq_t& r,
const mpz_t& p);
108size_t mpz_bytes(
const mpz_t& v)
noexcept {
109 const size_t alloc =
static_cast<size_t>(v[0]._mp_alloc);
110 return sizeof(mp_limb_t)*alloc;
118inline void move_from_source_to_target
119(__mpz_struct& source, __mpz_struct& target)
122 target._mp_alloc = source._mp_alloc;
123 target._mp_size = source._mp_size;
124 target._mp_d = source._mp_d;
128 source._mp_alloc = 0;
130 source._mp_d =
nullptr;
148void move_mpz_to_mpz(mpz_t& source, mpz_t& target)
noexcept {
149 __lal::move_from_source_to_target(source[0], target[0]);
164void move_mpq_to_mpq(mpq_t& source, mpq_t& target)
noexcept {
165 __lal::move_from_source_to_target(source[0]._mp_num, target[0]._mp_num);
166 __lal::move_from_source_to_target(source[0]._mp_den, target[0]._mp_den);
182void move_mpz_to_mpq(mpz_t& source, mpq_t& target)
noexcept {
184 __lal::move_from_source_to_target(source[0], target[0]._mp_num);
186 mpz_init_set_ui(&target[0]._mp_den, 1);
187 mpq_canonicalize(target);
203void move_mpz_to_mpq(mpz_t& source_n, mpz_t& source_d, mpq_t& target)
noexcept {
204 __lal::move_from_source_to_target(source_n[0], target[0]._mp_num);
205 __lal::move_from_source_to_target(source_d[0], target[0]._mp_den);
Main namespace of the library.
Definition definitions.hpp:48