version 1.1, 2018/09/19 06:00:58 |
version 1.7, 2018/10/02 09:06:15 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM$ |
* $OpenXM: OpenXM_contrib2/asir2018/include/ca.h,v 1.6 2018/10/01 05:54:09 noro Exp $ |
*/ |
*/ |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
Line 197 typedef unsigned _int64 UL; |
|
Line 197 typedef unsigned _int64 UL; |
|
#endif |
#endif |
|
|
#if defined(__GNUC__) && SIZEOF_LONG == 8 |
#if defined(__GNUC__) && SIZEOF_LONG == 8 |
typedef __uint64_t U64; |
|
typedef __uint128_t U128; |
typedef __uint128_t U128; |
typedef __int64_t L64; |
typedef __int64_t L64; |
typedef __int128_t L128; |
typedef __int128_t L128; |
|
|
#endif |
#endif |
|
|
typedef struct oZ { |
typedef struct oZ { |
Line 771 typedef unsigned int ModNum; |
|
Line 771 typedef unsigned int ModNum; |
|
#define COEF(p) ((p)->c) |
#define COEF(p) ((p)->c) |
#define DEG(p) ((p)->d) |
#define DEG(p) ((p)->d) |
#define CONT(a) ((a)->cont) |
#define CONT(a) ((a)->cont) |
#define UDEG(f) QTOS(DEG(DC(f))) |
#define UDEG(f) ZTOS(DEG(DC(f))) |
#define UCOEF(f) (COEF(DC(f))) |
#define UCOEF(f) (COEF(DC(f))) |
#define LC(f) (NUM(f)?(f):COEF(DC(f))) |
#define LC(f) (NUM(f)?(f):COEF(DC(f))) |
|
|
Line 978 if(!(r)){NEWDMM(r);(c)=(r);}else{NEWDMM(NEXT(c));(c)=N |
|
Line 978 if(!(r)){NEWDMM(r);(c)=(r);}else{NEWDMM(NEXT(c));(c)=N |
|
#define DUPZ(p,q) (NEWZ(q),BDY(q)=BDY(p)) |
#define DUPZ(p,q) (NEWZ(q),BDY(q)=BDY(p)) |
#define DUPQ(p,q) (NEWQ(q),BDY(q)=BDY(p)) |
#define DUPQ(p,q) (NEWQ(q),BDY(q)=BDY(p)) |
|
|
#define STOQ(n,q) ((!(n))?((q)=0):(NEWZ(q),mpz_set_si(BDY(q),n))) |
#define STOZ(n,q) ((!(n))?((q)=0):(NEWZ(q),mpz_set_si(BDY(q),n))) |
#define UTOQ(n,q) ((!(n))?((q)=0):(NEWZ(q),mpz_set_ui(BDY(q),n))) |
#define UTOZ(n,q) ((!(n))?((q)=0):(NEWZ(q),mpz_set_ui(BDY(q),n))) |
|
|
/* for initializing static object */ |
/* for initializing static object */ |
#define STOQ0(n,q) (OID(q)=O_N,NID(q)=N_Q,(q)->z=1,mpz_init(BDY(q)),mpz_set_si(BDY(q),n)) |
#define STOZ0(n,q) (OID(q)=O_N,NID(q)=N_Q,(q)->z=1,mpz_init(BDY(q)),mpz_set_si(BDY(q),n)) |
#define STOLM0(n,q) (OID(q)=O_N,NID(q)=N_LM,mpz_init(BDY(q)),mpz_set_si(BDY(q),n)) |
#define STOLM0(n,q) (OID(q)=O_N,NID(q)=N_LM,mpz_init(BDY(q)),mpz_set_si(BDY(q),n)) |
|
|
#define QTOS(q) (!(q)?0:((q)->z==1?mpz_get_si(BDY((Z)q)):(error("QTOS : invalid argument"),0))) |
#define ZTOS(q) (!(q)?0:((q)->z==1?mpz_get_si(BDY((Z)q)):(error("ZTOS : invalid argument"),0))) |
#define LMTOS(q) (!(q)?0:mpz_get_si(BDY(q))) |
#define LMTOS(q) (!(q)?0:mpz_get_si(BDY(q))) |
|
|
#define UTOMQ(a,b) ((a)?(NEWMQ(b),CONT(b)=(unsigned int)(a),(b)):((b)=0)) |
#define UTOMQ(a,b) ((a)?(NEWMQ(b),CONT(b)=(unsigned int)(a),(b)):((b)=0)) |
Line 1021 if(!(r)){NEWDMM(r);(c)=(r);}else{NEWDMM(NEXT(c));(c)=N |
|
Line 1021 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 UNIMQ(q) ((q)&&NUM(q)&&SFF(q)&&(CONT((MQ)q)==1)) |
#define MUNIMQ(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 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 */ |
/* special macros for private memory management */ |
|
|
Line 1436 int geldb(VL,P); |
|
Line 1438 int geldb(VL,P); |
|
int getchomdeg(V,P); |
int getchomdeg(V,P); |
int getdeg(V,P); |
int getdeg(V,P); |
int getlchomdeg(V,P,int *); |
int getlchomdeg(V,P,int *); |
int get_lprime(int); |
|
int homdeg(P); |
int homdeg(P); |
unsigned int invm(unsigned int,int); |
unsigned int invm(unsigned int,int); |
int iscycm(P); |
int iscycm(P); |
Line 2518 int compnbp(VL vl,NBP p1,NBP p2); |
|
Line 2519 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 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 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 UNIQ(a) (INTQ(a)&&!mpz_cmp_si(BDY((Z)a),1)) |
#define MUNIQ(a) (INTQ(a)&&!mpz_cmp_si(BDY((Z)a),-1)) |
#define MUNIQ(a) (INTQ(a)&&!mpz_cmp_si(BDY((Z)a),-1)) |
|
|
Line 2530 void *gc_realloc(void *p,size_t osize,size_t nsize); |
|
Line 2531 void *gc_realloc(void *p,size_t osize,size_t nsize); |
|
void gc_free(void *p,size_t size); |
void gc_free(void *p,size_t size); |
void init_gmpq(); |
void init_gmpq(); |
Q mpqtozq(mpq_t a); |
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 addz(Z n1,Z n2,Z *nr); |
void subz(Z n1,Z n2,Z *nr); |
void subz(Z n1,Z n2,Z *nr); |
void mulz(Z n1,Z n2,Z *nr); |
void mulz(Z n1,Z n2,Z *nr); |
Line 2683 void hextoz(char *hex,Z *np); |
|
Line 2691 void hextoz(char *hex,Z *np); |
|
void todouble(Obj,Obj *); |
void todouble(Obj,Obj *); |
|
|
void lmtolf(LM f,Z *b); |
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__) |
#if defined(VISUAL) || defined(__MINGW32__) |
void check_intr(); |
void check_intr(); |