.. _long-extras: **long_extras.h** -- support functions for signed word arithmetic =============================================================================== Properties -------------------------------------------------------------------------------- .. function:: 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 -------------------------------------------------------------------------------- .. function:: 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 -------------------------------------------------------------------------------- .. function:: 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. .. function:: mp_limb_signed_t z_randtest_not_zero(flint_rand_t state) As for ``z_randtest(state)``, but does not return `0`. .. function:: 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 -------------------------------------------------------------------------------- .. function:: int z_kronecker(slong a, slong n) Return the Kronecker symbol `\left(\frac{a}{n}\right)` for any `a` and any `n`.