[BACK]Return to ca.h CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2018 / include

Diff for /OpenXM_contrib2/asir2018/include/ca.h between version 1.1 and 1.18

version 1.1, 2018/09/19 06:00:58 version 1.18, 2020/02/22 06:23:36
Line 45 
Line 45 
  * 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.17 2019/12/27 08:13:59 noro Exp $
 */  */
 #include <stdio.h>  #include <stdio.h>
 #include <stdlib.h>  #include <stdlib.h>
Line 95  typedef caddr_t pointer;
Line 95  typedef caddr_t pointer;
   
 typedef void * pointer;  typedef void * pointer;
   
 #if defined(sun)  #if defined(ANDROID)
 #include <strings.h>  #include <strings.h>
   #include <string.h>
   #define index(s,c) strchr(s,c)
   #define rindex(s,c) strrchr(s,c)
   #elif defined(sun)
   #include <strings.h>
 #else  #else
 #include <string.h>  #include <string.h>
 #if defined(VISUAL) || defined(__MINGW32__)  #if defined(VISUAL) || defined(__MINGW32__)
Line 197  typedef unsigned _int64 UL;
Line 202  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 445  typedef struct oQUOTE {
Line 450  typedef struct oQUOTE {
   short id;    short id;
   short pad;    short pad;
   pointer body;    pointer body;
     struct oVS *pvs;
 } *QUOTE;  } *QUOTE;
   
 typedef struct oQUOTEARG {  typedef struct oQUOTEARG {
Line 535  typedef struct oDMM {
Line 541  typedef struct oDMM {
   struct oDMM *next;    struct oDMM *next;
 } *DMM;  } *DMM;
   
   typedef struct oDMMstack {
     int rank,ordtype;
     DMM *in;
     DMM *sum;
     LIST obj;
     struct oDMMstack *next;
   } *DMMstack;
   
   typedef struct oDMMstack_array {
     int len;
     DMMstack *body;
   } *DMMstack_array;
   
 typedef struct oDL {  typedef struct oDL {
   int td;    int td;
   int d[1];    int d[1];
Line 598  typedef struct oNODE {
Line 617  typedef struct oNODE {
   struct oNODE *next;    struct oNODE *next;
 } *NODE;  } *NODE;
   
   typedef struct oNODE2 {
     pointer body1,body2;
     struct oNODE2 *next;
   } *NODE2;
   
 /* univariate poly over small finite field; dense */  /* univariate poly over small finite field; dense */
 typedef struct oUM {  typedef struct oUM {
   int d;    int d;
Line 672  struct order_spec {
Line 696  struct order_spec {
   int id;    int id;
   Obj obj;    Obj obj;
   int nv;    int nv;
   int ispot; /* 1 means Position over Term (Pos then Term) */    int module_ordtype; /* 0=TOP, 1=POT, 2=wPOT, 3=Schreyer */
   int pot_nelim; /* size of positions for pot-elimination order */    int pot_nelim; /* size of positions for pot-elimination order */
   int *top_weight;    int *top_weight;
   int module_rank;    int module_rank;
   int *module_top_weight;    int *module_top_weight;
     int *module_base_ord;
     struct order_spec *base; /* for schreyer order */
     DMMstack dmmstack;
   union {    union {
     int simple;      int simple;
     struct {      struct {
Line 771  typedef unsigned int ModNum;
Line 798  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 804  void (*set_signal(int sig, void (*handler)(int)))(int)
Line 831  void (*set_signal(int sig, void (*handler)(int)))(int)
 #endif  #endif
   
 /* for setjmp/longjmp compatibility */  /* for setjmp/longjmp compatibility */
 #if defined(__CYGWIN__) || defined(HAVE_SIGACTION) || (defined(__x86_64) && !defined(__MINGW32__))  #if defined(ANDROID)
   #define JMP_BUF jmp_buf
   #define SETJMP(x) _setjmp(x)
   #define LONGJMP(x,y) _longjmp(x,y)
   #elif defined(__CYGWIN__) || defined(HAVE_SIGACTION) || (defined(__x86_64) && !defined(__MINGW32__))
 #define JMP_BUF sigjmp_buf  #define JMP_BUF sigjmp_buf
 #define SETJMP(x) sigsetjmp(x,~0)  #define SETJMP(x) sigsetjmp(x,~0)
 #define LONGJMP(x,y) siglongjmp(x,y)  #define LONGJMP(x,y) siglongjmp(x,y)
Line 896  bzero((char *)(q)->b,(w)*sizeof(unsigned int)))
Line 927  bzero((char *)(q)->b,(w)*sizeof(unsigned int)))
 #define NEWVL(vl) ((vl)=(VL)MALLOC(sizeof(struct oVL)))  #define NEWVL(vl) ((vl)=(VL)MALLOC(sizeof(struct oVL)))
 #define NEWMP(m) ((m)=(MP)MALLOC(sizeof(struct oMP)))  #define NEWMP(m) ((m)=(MP)MALLOC(sizeof(struct oMP)))
 #define NEWDMM(m) ((m)=(DMM)MALLOC(sizeof(struct oDMM)))  #define NEWDMM(m) ((m)=(DMM)MALLOC(sizeof(struct oDMM)))
   #define NEWDMMstack(m) ((m)=(DMMstack)MALLOC(sizeof(struct oDMMstack)))
   #define NEWDMMstack_array(m) ((m)=(DMMstack_array)MALLOC(sizeof(struct oDMMstack_array)))
 #define NEWDLBUCKET(a) ((a)=(DLBUCKET)MALLOC(sizeof(struct oDLBUCKET)))  #define NEWDLBUCKET(a) ((a)=(DLBUCKET)MALLOC(sizeof(struct oDLBUCKET)))
 #define NEWDPP(a) ((a)=(DP_pairs)MALLOC(sizeof(struct dp_pairs)))  #define NEWDPP(a) ((a)=(DP_pairs)MALLOC(sizeof(struct dp_pairs)))
   
Line 932  DEG(DC(p))=ONE,COEF(DC(p))=(P)ONE,NEXT(DC(p))=0)
Line 965  DEG(DC(p))=ONE,COEF(DC(p))=(P)ONE,NEXT(DC(p))=0)
 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0)  DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0)
 #define MKNODE(a,b,c) \  #define MKNODE(a,b,c) \
 (NEWNODE(a),(a)->body=(pointer)b,NEXT(a)=(NODE)(c))  (NEWNODE(a),(a)->body=(pointer)b,NEXT(a)=(NODE)(c))
   #define NEWNODE2(a) ((a)=(NODE2)MALLOC(sizeof(struct oNODE2)))
   #define MKNODE2(a,b,c,d) \
   (NEWNODE2(a),(a)->body1=(pointer)b,(a)->body2=(pointer)c,NEXT(a)=(NODE2)(d))
   #define BDY1(a) ((a)->body1)
   #define BDY2(a) ((a)->body2)
 #define MKLIST(a,b) (NEWLIST(a),(a)->body=(NODE)(b))  #define MKLIST(a,b) (NEWLIST(a),(a)->body=(NODE)(b))
 #define MKVECT(m,l) \  #define MKVECT(m,l) \
 (NEWVECT(m),(m)->len=(l),(m)->body=(pointer *)CALLOC((l),sizeof(pointer)))  (NEWVECT(m),(m)->len=(l),(m)->body=(pointer *)CALLOC((l),sizeof(pointer)))
Line 951  DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0)
Line 989  DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0)
 #define MKMATHCAP(e,b) (NEWMATHCAP(e),(e)->body=(LIST)(b))  #define MKMATHCAP(e,b) (NEWMATHCAP(e),(e)->body=(LIST)(b))
 #define MKBYTEARRAY(m,l) \  #define MKBYTEARRAY(m,l) \
 (NEWBYTEARRAY(m),(m)->len=(l),(m)->body=(unsigned char *)MALLOC_ATOMIC((l)),bzero((m)->body,(l)))  (NEWBYTEARRAY(m),(m)->len=(l),(m)->body=(unsigned char *)MALLOC_ATOMIC((l)),bzero((m)->body,(l)))
 #define MKQUOTE(q,b) (NEWQUOTE(q),(q)->body=(pointer)(b))  #define MKQUOTE(q,b) (NEWQUOTE(q),(q)->body=(pointer)(b),(q)->pvs=CPVS)
 #define MKQUOTEARG(q,t,b) (NEWQUOTEARG(q),(q)->type=(t),(q)->body=(pointer)(b))  #define MKQUOTEARG(q,t,b) (NEWQUOTEARG(q),(q)->type=(t),(q)->body=(pointer)(b))
   
 #define NEXTDC(r,c) \  #define NEXTDC(r,c) \
Line 978  if(!(r)){NEWDMM(r);(c)=(r);}else{NEWDMM(NEXT(c));(c)=N
Line 1016  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))?(void)((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))?(void)((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 1059  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 1476  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 1775  void vntovl(VN,int,VL *);
Line 1814  void vntovl(VN,int,VL *);
 void saveerror(FILE *,ERR);  void saveerror(FILE *,ERR);
 void saveui(FILE *,USINT);  void saveui(FILE *,USINT);
 void savedp(FILE *,DP);  void savedp(FILE *,DP);
   void savedpm(FILE *,DPM);
 void savestring(FILE *,STRING);  void savestring(FILE *,STRING);
 void savemat(FILE *,MAT);  void savemat(FILE *,MAT);
 void savevect(FILE *,VECT);  void savevect(FILE *,VECT);
Line 1800  void savegfsn(FILE *,GFSN);
Line 1840  void savegfsn(FILE *,GFSN);
 void loaderror(FILE *,ERR *);  void loaderror(FILE *,ERR *);
 void loadui(FILE *,USINT *);  void loadui(FILE *,USINT *);
 void loaddp(FILE *,DP *);  void loaddp(FILE *,DP *);
   void loaddpm(FILE *,DPM *);
 void loadstring(FILE *,STRING *);  void loadstring(FILE *,STRING *);
 void loadmat(FILE *,MAT *);  void loadmat(FILE *,MAT *);
 void loadvect(FILE *,VECT *);  void loadvect(FILE *,VECT *);
Line 2518  int compnbp(VL vl,NBP p1,NBP p2);
Line 2559  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 2571  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 2613  void nd_det(int mod,MAT f,P *rp);
Line 2661  void nd_det(int mod,MAT f,P *rp);
 void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int f4,struct order_spec *ord,LIST *rp);  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int f4,struct order_spec *ord,LIST *rp);
 void nd_gr_postproc(LIST f,LIST v,int m,struct order_spec *ord,int do_check,LIST *rp);  void nd_gr_postproc(LIST f,LIST v,int m,struct order_spec *ord,int do_check,LIST *rp);
 void nd_gr_recompute_trace(LIST f,LIST v,int m,struct order_spec *ord,LIST tlist,LIST *rp);  void nd_gr_recompute_trace(LIST f,LIST v,int m,struct order_spec *ord,LIST tlist,LIST *rp);
 void nd_gr_trace(LIST f,LIST v,int trace,int homo,int f4,struct order_spec *ord,LIST *rp);  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int retdp,int f4,struct order_spec *ord,LIST *rp);
 void nd_nf_p(Obj f,LIST g,LIST v,int m,struct order_spec *ord,Obj *rp);  void nd_nf_p(Obj f,LIST g,LIST v,int m,struct order_spec *ord,Obj *rp);
 void obj_algtodalg(Obj obj,Obj *r);  void obj_algtodalg(Obj obj,Obj *r);
 void obj_dalgtoalg(Obj obj,Obj *r);  void obj_dalgtoalg(Obj obj,Obj *r);
Line 2683  void hextoz(char *hex,Z *np);
Line 2731  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();

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.18

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>