X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/075af3599557e6e480049137c0e316c1de1abf93..6a024d24d97cb5d42c0091571735475b849f59f4:/math/mp.h diff --git a/math/mp.h b/math/mp.h index 8a299c8c..0434c282 100644 --- a/math/mp.h +++ b/math/mp.h @@ -37,6 +37,7 @@ #include #include +#include #include #ifndef CATACOMB_MPW_H @@ -196,7 +197,8 @@ extern void mp_destroy(mp */*m*/); extern mp *mp_copy(mp */*m*/); -#define MP_COPY(m) ((m)->ref++, (m)) +#define MP_COPY(m) MUFFLE_WARNINGS_EXPR(GCC_WARNING("-Wunused-value"), \ + ((m)->ref++, (m))) /* --- @mp_drop@ --- * * @@ -890,6 +892,19 @@ extern mp *mp_exp(mp */*d*/, mp */*a*/, mp */*e*/); extern mp *mp_odd(mp */*d*/, mp */*m*/, size_t */*s*/); +/* --- @mp_leastcongruent@ --- * + * + * Arguments: @mp *d@ = pointer to destination + * @mp *b@ = lower bound + * @mp *r@ = representative + * @mp *m@ = modulus + * + * Returns: The smallest integer %$x \equiv r \pmod{m}$% such that + * %$x \ge b$%. + */ + +extern mp *mp_leastcongruent(mp */*d*/, mp */*b*/, mp */*r*/, mp */*m*/); + /*----- More advanced algorithms ------------------------------------------*/ /* --- @mp_sqrt@ --- * @@ -965,7 +980,7 @@ extern mp *mp_modinv(mp */*d*/, mp */*x*/, mp */*p*/); * congruent to 1 or 7 (mod 8), or %$-1$% otherwise. * * If %$n$% is positive and odd, then this is the Jacobi - * symbol. (The Kronecker symbol is a consistant domain + * symbol. (The Kronecker symbol is a consistent domain * extension; the Jacobi symbol was implemented first, and the * name stuck.) */