=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/engine/N.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- OpenXM_contrib2/asir2018/engine/N.c 2018/09/21 07:06:51 1.2 +++ OpenXM_contrib2/asir2018/engine/N.c 2018/10/01 05:49:06 1.3 @@ -1,50 +1,52 @@ +/* $OpenXM$ */ #include "gmp.h" -unsigned long mul64(unsigned long a,unsigned long b,unsigned long *c) +mp_limb_t mul64(mp_limb_t a,mp_limb_t b,mp_limb_t *c) { - unsigned long u; - u = (unsigned long)mpn_mul_1((mp_limb_t *)c,(mp_limb_t *)&a,1,(mp_limb_t)b); + mp_limb_t u; + u = (mp_limb_t)mpn_mul_1((mp_limb_t *)c,(mp_limb_t *)&a,1,(mp_limb_t)b); c[1] = u; return u; } -unsigned long mod64(unsigned long u,unsigned long l,unsigned long b) +mp_limb_t mod64(mp_limb_t u,mp_limb_t l,mp_limb_t b) { - unsigned long q[2],d[2]; - unsigned long r; + mp_limb_t q[2],d[2]; + mp_limb_t r; d[0] = l; d[1] = u; - r = (unsigned long)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)b); + r = (mp_limb_t)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)b); return r; } -unsigned long mulmod64(unsigned long a,unsigned long b,unsigned long m) +mp_limb_t mulmod64(mp_limb_t a,mp_limb_t b,mp_limb_t m) { - unsigned long d[2],q[2]; - unsigned long r; + mp_limb_t d[2],q[2]; + mp_limb_t r; - d[1] = (unsigned long)mpn_mul_1(d,(mp_limb_t *)&a,1,(mp_limb_t)b); - r = (unsigned long)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)m); + d[1] = (mp_limb_t)mpn_mul_1(d,(mp_limb_t *)&a,1,(mp_limb_t)b); + r = (mp_limb_t)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)m); return r; } -unsigned long muladdmod64(unsigned long a,unsigned long b,unsigned long c,unsigned long m) +mp_limb_t muladdmod64(mp_limb_t a,mp_limb_t b,mp_limb_t c,mp_limb_t m) { - unsigned long d[2],q[2]; - unsigned long r; + mp_limb_t d[2],q[2]; + mp_limb_t r; d[0] = c; - d[1] = (unsigned long)mpn_addmul_1(d,(mp_limb_t *)&a,1,(mp_limb_t)b); - r = (unsigned long)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)m); + d[1] = (mp_limb_t)mpn_addmul_1(d,(mp_limb_t *)&a,1,(mp_limb_t)b); + r = (mp_limb_t)mpn_divmod_1((mp_limb_t *)q,(mp_limb_t *)d,2,(mp_limb_t)m); return r; } -unsigned long invmod64(unsigned long a,unsigned long m) +mp_limb_t invmod64(mp_limb_t a,mp_limb_t m) { mpz_t x,y,z; mpz_init_set_ui(x,a); mpz_init_set_ui(y,m); + mpz_init(z); mpz_invert(z,x,y); return mpz_get_ui(z); }