long_extras.h – support functions for signed word arithmetic


size_t z_sizeinbase(slong n, int b)

Returns the number of digits in the base \(b\) representation of the absolute value of the integer \(n\).

Assumes that \(b \geq 2\).

Checked Arithmetic

int z_mul_checked(slong *a, slong b, slong c)

Set \(*a\) to \(b\) times \(c\) and return \(1\) if the product overflowed. Otherwise, return \(0\).

Random functions

mp_limb_signed_t z_randtest(flint_rand_t state)

Returns a pseudo random number with a random number of bits, from \(0\) to FLINT_BITS. The probability of the special values \(0\), \(\pm 1\), COEFF_MAX, COEFF_MIN, WORD_MAX and WORD_MIN is increased.

This random function is mainly used for testing purposes.

mp_limb_signed_t z_randtest_not_zero(flint_rand_t state)

As for z_randtest(state), but does not return \(0\).

mp_limb_signed_t z_randint(flint_rand_t state, mp_limb_t limit)

Returns a pseudo random number of absolute value less than limit. If limit is zero or exceeds WORD_MAX, it is interpreted as WORD_MAX.

Modular arithmetic

int z_kronecker(slong a, slong n)

Return the Kronecker symbol \(\left(\frac{a}{n}\right)\) for any \(a\) and any \(n\).