=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/include/ca.h,v retrieving revision 1.4 retrieving revision 1.7 diff -u -p -r1.4 -r1.7 --- OpenXM_contrib2/asir2018/include/ca.h 2018/09/28 08:20:29 1.4 +++ OpenXM_contrib2/asir2018/include/ca.h 2018/10/02 09:06:15 1.7 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2018/include/ca.h,v 1.3 2018/09/24 22:26:43 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2018/include/ca.h,v 1.6 2018/10/01 05:54:09 noro Exp $ */ #include #include @@ -197,10 +197,10 @@ typedef unsigned _int64 UL; #endif #if defined(__GNUC__) && SIZEOF_LONG == 8 -typedef __uint64_t U64; typedef __uint128_t U128; typedef __int64_t L64; typedef __int128_t L128; + #endif typedef struct oZ { @@ -1021,6 +1021,8 @@ if(!(r)){NEWDMM(r);(c)=(r);}else{NEWDMM(NEXT(c));(c)=N #define UNIMQ(q) ((q)&&NUM(q)&&SFF(q)&&(CONT((MQ)q)==1)) #define MUNIMQ(q) ((q)&&NUM(q)&&SFF(q)&&(CONT((MQ)q)==-1)) #define EVENZ(n) ((!(n))||(INT(n)&&mpz_tstbit(((Z)(n))->body,0)==0)) +#define UNIMPZ(q) (mpz_cmp_si(q,1)==0) +#define MUNIMPZ(q) (mpz_cmp_si(q,-1)==0) /* special macros for private memory management */ @@ -1436,7 +1438,6 @@ int geldb(VL,P); int getchomdeg(V,P); int getdeg(V,P); int getlchomdeg(V,P,int *); -int get_lprime(int); int homdeg(P); unsigned int invm(unsigned int,int); int iscycm(P); @@ -2690,6 +2691,14 @@ void hextoz(char *hex,Z *np); void todouble(Obj,Obj *); void lmtolf(LM f,Z *b); + +#if SIZEOF_LONG == 8 +mp_limb_t get_lprime64(int index); +mp_limb_t **almat64(int,int); +mp_limb_t remqi64(Q n,mp_limb_t m); +int generic_gauss_elim64(MAT mat,MAT *nm,Z *dn,int **rindp,int **cindp); +int generic_gauss_elim_mod64(mp_limb_t **mat,int row,int col,mp_limb_t md,int *colstat); +#endif #if defined(VISUAL) || defined(__MINGW32__) void check_intr();