=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/include/ca.h,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- OpenXM_contrib2/asir2018/include/ca.h 2018/09/19 06:00:58 1.1 +++ OpenXM_contrib2/asir2018/include/ca.h 2018/09/24 22:26:43 1.3 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM$ + * $OpenXM: OpenXM_contrib2/asir2018/include/ca.h,v 1.2 2018/09/21 07:06:51 noro Exp $ */ #include #include @@ -2518,7 +2518,7 @@ int compnbp(VL vl,NBP p1,NBP p2); #define MPQTOQ(g,q) (!mpq_sgn(g)?((q)=0):(NEWQ(q),BDY(q)[0]=(g)[0],(q))) #define INTMPQ(a) (!mpz_cmp_ui(mpq_denref(a),1)) -#define INTQ(a) ((a)&&NUM(a)&&((Q)a)->z==1) +#define INTQ(a) ((a)&&NUM(a)&&RATN(a)&&((Q)a)->z==1) #define UNIQ(a) (INTQ(a)&&!mpz_cmp_si(BDY((Z)a),1)) #define MUNIQ(a) (INTQ(a)&&!mpz_cmp_si(BDY((Z)a),-1)) @@ -2530,6 +2530,13 @@ void *gc_realloc(void *p,size_t osize,size_t nsize); void gc_free(void *p,size_t size); void init_gmpq(); Q mpqtozq(mpq_t a); + +unsigned long mul64(unsigned long a,unsigned long b,unsigned long *c); +unsigned long mod64(unsigned long u,unsigned long l,unsigned long b); +unsigned long mulmod64(unsigned long a,unsigned long b,unsigned long m); +unsigned long muladdmod64(unsigned long a,unsigned long b,unsigned long c,unsigned long m); +unsigned long invmod64(unsigned long a,unsigned long m); + void addz(Z n1,Z n2,Z *nr); void subz(Z n1,Z n2,Z *nr); void mulz(Z n1,Z n2,Z *nr);