version 1.31, 2001/12/21 08:23:12 |
version 1.50, 2004/07/13 07:59:53 |
|
|
* 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_contrib2/asir2000/include/ca.h,v 1.30 2001/11/19 00:57:12 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.49 2004/05/14 06:02:54 noro Exp $ |
*/ |
*/ |
#include <stdio.h> |
#include <stdio.h> |
|
#include <stdlib.h> |
|
|
#if defined(hpux) |
#if defined(hpux) |
#include <netinet/in.h> |
#include <netinet/in.h> |
# define setbuffer(FP,buf,siz) setvbuf(FP,buf,_IOFBF,siz) |
# define setbuffer(FP,buf,siz) setvbuf(FP,buf,_IOFBF,siz) |
#endif |
#endif |
|
|
#if defined(VISUAL) |
#if !defined(VISUAL) |
#include <stdlib.h> |
#include <unistd.h> |
#endif |
#endif |
|
|
#if !defined(VISUAL) |
#if !defined(VISUAL) |
Line 81 typedef caddr_t pointer; |
|
Line 82 typedef caddr_t pointer; |
|
|
|
typedef void * pointer; |
typedef void * pointer; |
|
|
#if defined(VISUAL) |
#if defined(sun) |
|
#include <strings.h> |
|
#else |
#include <string.h> |
#include <string.h> |
|
#if defined(VISUAL) |
#define index(s,c) strchr(s,c) |
#define index(s,c) strchr(s,c) |
#define bzero(s,len) memset(s,0,len) |
#define bzero(s,len) memset(s,0,len) |
#define bcopy(x,y,len) memcpy(y,x,len) |
#define bcopy(x,y,len) memcpy(y,x,len) |
#endif |
#endif |
|
#endif |
|
|
#define COPY(a,b) ((b)=(a)) |
#define COPY(a,b) ((b)=(a)) |
#define FREEN(p) |
#define FREEN(p) |
Line 113 typedef void * pointer; |
|
Line 118 typedef void * pointer; |
|
#define O_GFMMAT 15 |
#define O_GFMMAT 15 |
#define O_BYTEARRAY 16 |
#define O_BYTEARRAY 16 |
#define O_QUOTE 17 |
#define O_QUOTE 17 |
|
#define O_OPTLIST 18 |
|
#define O_SYMBOL 19 |
|
#define O_RANGE 20 |
|
#define O_TB 21 |
|
#define O_DPV 22 |
|
#define O_QUOTEARG 23 |
#define O_VOID -1 |
#define O_VOID -1 |
|
|
#define N_Q 0 |
#define N_Q 0 |
Line 131 typedef void * pointer; |
|
Line 142 typedef void * pointer; |
|
#define ORD_GRADLEX 1 |
#define ORD_GRADLEX 1 |
#define ORD_LEX 2 |
#define ORD_LEX 2 |
|
|
#if LONG_IS_32BIT |
typedef enum { |
|
A_end=0,A_fnode,A_arf,A_int,A_str,A_internal,A_node,A_notimpl,A_func |
|
} farg_type; |
|
|
|
#if defined(LONG_IS_32BIT) |
#if defined(VISUAL) |
#if defined(VISUAL) |
typedef _int64 L; |
typedef _int64 L; |
typedef unsigned _int64 UL; |
typedef unsigned _int64 UL; |
Line 318 typedef struct oDP { |
|
Line 333 typedef struct oDP { |
|
struct oMP *body; |
struct oMP *body; |
} *DP; |
} *DP; |
|
|
|
typedef struct oDPV { |
|
short id; |
|
int len; |
|
int sugar; |
|
struct oDP **body; |
|
} *DPV; |
|
|
typedef struct oUSINT { |
typedef struct oUSINT { |
short id; |
short id; |
short pad; |
short pad; |
Line 349 typedef struct oQUOTE { |
|
Line 371 typedef struct oQUOTE { |
|
pointer body; |
pointer body; |
} *QUOTE; |
} *QUOTE; |
|
|
|
typedef struct oQUOTEARG { |
|
short id; |
|
short pad; |
|
farg_type type; |
|
pointer body; |
|
} *QUOTEARG; |
|
|
|
typedef struct oOPTLIST { |
|
short id; |
|
short pad; |
|
struct oNODE *body; |
|
} *OPTLIST; |
|
|
|
typedef struct oSYMBOL { |
|
short id; |
|
short pad; |
|
char *name; |
|
int value; |
|
} *SYMBOL; |
|
|
|
typedef struct oRANGE { |
|
short id; |
|
short pad; |
|
struct oObj *start,*end; |
|
} *RANGE; |
|
|
|
typedef struct oTB { |
|
short id; |
|
short pad; |
|
int size,next; |
|
char **body; |
|
} *TB; |
|
|
typedef struct oObj { |
typedef struct oObj { |
short id; |
short id; |
short pad; |
short pad; |
Line 414 typedef struct oDLBUCKET { |
|
Line 469 typedef struct oDLBUCKET { |
|
struct oDLBUCKET *next; |
struct oDLBUCKET *next; |
} *DLBUCKET; |
} *DLBUCKET; |
|
|
|
typedef struct oGeoBucket { |
|
int m; |
|
struct oNODE *body[32]; |
|
} *GeoBucket; |
|
|
typedef struct oVL { |
typedef struct oVL { |
V v; |
V v; |
struct oVL *next; |
struct oVL *next; |
Line 474 struct order_pair { |
|
Line 534 struct order_pair { |
|
int order, length; |
int order, length; |
}; |
}; |
|
|
|
struct sparse_weight { |
|
int pos, value; |
|
}; |
|
|
|
#define IS_DENSE_WEIGHT 0 |
|
#define IS_SPARSE_WEIGHT 1 |
|
#define IS_BLOCK 2 |
|
|
|
struct weight_or_block { |
|
int type; |
|
int length; |
|
union { |
|
int *dense_weight; |
|
struct sparse_weight *sparse_weight; |
|
struct { |
|
int order, start; |
|
} block; |
|
} body; |
|
}; |
|
|
struct order_spec { |
struct order_spec { |
int id; |
int id; |
Obj obj; |
Obj obj; |
Line 488 struct order_spec { |
|
Line 568 struct order_spec { |
|
int row; |
int row; |
int **matrix; |
int **matrix; |
} matrix; |
} matrix; |
|
struct { |
|
int length; |
|
struct weight_or_block *w_or_b; |
|
} composite; |
} ord; |
} ord; |
}; |
}; |
|
|
|
struct modorder_spec { |
|
/* id : ORD_REVGRADLEX, ORD_GRADLEX, ORD_LEX */ |
|
int id; |
|
Obj obj; |
|
int len; |
|
int *degree_shift; |
|
}; |
|
|
/* structure for cputime */ |
/* structure for cputime */ |
|
|
struct oEGT { |
struct oEGT { |
|
|
|
|
#define INDEX 100 |
#define INDEX 100 |
|
|
#if USE_FLOAT |
#if defined(USE_FLOAT) |
typedef float ModNum; |
typedef float ModNum; |
#define NPrimes 536 |
#define NPrimes 536 |
#else |
#else |
Line 566 typedef unsigned int ModNum; |
|
Line 658 typedef unsigned int ModNum; |
|
#endif |
#endif |
#define CALLOC(d,e) MALLOC((d)*(e)) |
#define CALLOC(d,e) MALLOC((d)*(e)) |
|
|
#if !defined(__CYGWIN__) && ((defined(__GNUC__) || defined(vax) || defined(apollo) || defined(alloca) || defined(VISUAL))) |
#if !defined(__CYGWIN__) && (defined(__GNUC__) || defined(vax) || defined(apollo) || defined(alloca) || defined(VISUAL)) |
#define ALLOCA(d) alloca(d) |
#define ALLOCA(d) alloca(d) |
#else |
#else |
#define ALLOCA(d) MALLOC(d) |
#define ALLOCA(d) MALLOC(d) |
#endif |
#endif |
|
|
|
/* for setjmp/longjmp compatibility */ |
|
#if defined(__CYGWIN__) || defined(__x86_64) |
|
#define JMP_BUF sigjmp_buf |
|
#define SETJMP(x) sigsetjmp(x,~0) |
|
#define LONGJMP(x,y) siglongjmp(x,y) |
|
#else |
|
#define JMP_BUF jmp_buf |
|
#define SETJMP(x) setjmp(x) |
|
#define LONGJMP(x,y) longjmp(x,y) |
|
#endif |
|
|
#define TRUESIZE(type,n,atype) (sizeof(struct type)+MAX((n),0)*sizeof(atype)) |
#define TRUESIZE(type,n,atype) (sizeof(struct type)+MAX((n),0)*sizeof(atype)) |
#define NALLOC(d) ((N)MALLOC_ATOMIC(TRUESIZE(oN,(d)-1,int))) |
#define NALLOC(d) ((N)MALLOC_ATOMIC(TRUESIZE(oN,(d)-1,int))) |
#define UMALLOC(d) ((UM)MALLOC(TRUESIZE(oUM,d,int))) |
#define UMALLOC(d) ((UM)MALLOC(TRUESIZE(oUM,d,int))) |
Line 635 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
Line 738 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
#define NEWSTR(l) ((l)=(STRING)MALLOC(sizeof(struct oSTRING)),OID(l)=O_STR) |
#define NEWSTR(l) ((l)=(STRING)MALLOC(sizeof(struct oSTRING)),OID(l)=O_STR) |
#define NEWCOMP(c,n) ((c)=(COMP)MALLOC(sizeof(struct oCOMP)+((n)-1)*sizeof(Obj)),OID(c)=O_COMP) |
#define NEWCOMP(c,n) ((c)=(COMP)MALLOC(sizeof(struct oCOMP)+((n)-1)*sizeof(Obj)),OID(c)=O_COMP) |
#define NEWDP(d) ((d)=(DP)MALLOC(sizeof(struct oDP)),OID(d)=O_DP) |
#define NEWDP(d) ((d)=(DP)MALLOC(sizeof(struct oDP)),OID(d)=O_DP) |
|
#define NEWDPV(d) ((d)=(DPV)MALLOC(sizeof(struct oDPV)),OID(d)=O_DPV) |
#define NEWUSINT(u) ((u)=(USINT)MALLOC_ATOMIC(sizeof(struct oUSINT)),OID(u)=O_USINT) |
#define NEWUSINT(u) ((u)=(USINT)MALLOC_ATOMIC(sizeof(struct oUSINT)),OID(u)=O_USINT) |
#define NEWERR(e) ((e)=(ERR)MALLOC(sizeof(struct oERR)),OID(e)=O_ERR) |
#define NEWERR(e) ((e)=(ERR)MALLOC(sizeof(struct oERR)),OID(e)=O_ERR) |
#define NEWMATHCAP(e) ((e)=(MATHCAP)MALLOC(sizeof(struct oMATHCAP)),OID(e)=O_MATHCAP) |
#define NEWMATHCAP(e) ((e)=(MATHCAP)MALLOC(sizeof(struct oMATHCAP)),OID(e)=O_MATHCAP) |
#define NEWBYTEARRAY(e) ((e)=(BYTEARRAY)MALLOC(sizeof(struct oBYTEARRAY)),OID(e)=O_BYTEARRAY) |
#define NEWBYTEARRAY(e) ((e)=(BYTEARRAY)MALLOC(sizeof(struct oBYTEARRAY)),OID(e)=O_BYTEARRAY) |
#define NEWQUOTE(e) ((e)=(QUOTE)MALLOC(sizeof(struct oQUOTE)),OID(e)=O_QUOTE) |
#define NEWQUOTE(e) ((e)=(QUOTE)MALLOC(sizeof(struct oQUOTE)),OID(e)=O_QUOTE) |
|
#define NEWQUOTEARG(e) ((e)=(QUOTEARG)MALLOC(sizeof(struct oQUOTEARG)),OID(e)=O_QUOTEARG) |
|
#define NEWOPTLIST(l) ((l)=(OPTLIST)MALLOC(sizeof(struct oOPTLIST)),OID(l)=O_OPTLIST) |
|
#define NEWSYMBOL(l) ((l)=(SYMBOL)MALLOC(sizeof(struct oSYMBOL)),OID(l)=O_SYMBOL) |
|
#define NEWRANGE(l) ((l)=(RANGE)MALLOC(sizeof(struct oRANGE)),OID(l)=O_RANGE) |
|
#define NEWTB(l) ((l)=(TB)MALLOC(sizeof(struct oTB)),OID(l)=O_TB,(l)->size=256,(l)->next=0,(l)->body=(char **)MALLOC((l)->size*sizeof(char *))) |
|
|
#define NEWNODE(a) ((a)=(NODE)MALLOC(sizeof(struct oNODE))) |
#define NEWNODE(a) ((a)=(NODE)MALLOC(sizeof(struct oNODE))) |
#define NEWDC(dc) ((dc)=(DCP)MALLOC(sizeof(struct oDCP))) |
#define NEWDC(dc) ((dc)=(DCP)MALLOC(sizeof(struct oDCP))) |
Line 685 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
Line 794 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
#define TOGFMMAT(r,c,b,m) (NEWGFMMAT(m),(m)->row=(r),(m)->col=(c),(m)->body=(b)) |
#define TOGFMMAT(r,c,b,m) (NEWGFMMAT(m),(m)->row=(r),(m)->col=(c),(m)->body=(b)) |
#define MKSTR(a,b) (NEWSTR(a),(a)->body=(char *)(b)) |
#define MKSTR(a,b) (NEWSTR(a),(a)->body=(char *)(b)) |
#define MKDP(n,m,d) (NEWDP(d),(d)->nv=(n),BDY(d)=(m)) |
#define MKDP(n,m,d) (NEWDP(d),(d)->nv=(n),BDY(d)=(m)) |
|
#define MKDPV(len,m,d) (NEWDPV(d),(d)->len=(len),BDY(d)=(m)) |
#define MKLM(b,l) (!(b)?(l)=0:(NEWLM(l),(l)->body=(b),(l))) |
#define MKLM(b,l) (!(b)?(l)=0:(NEWLM(l),(l)->body=(b),(l))) |
#define MKGF2N(b,l) (!(b)?(l)=0:(NEWGF2N(l),(l)->body=(b),(l))) |
#define MKGF2N(b,l) (!(b)?(l)=0:(NEWGF2N(l),(l)->body=(b),(l))) |
#define MKGFPN(b,l) (!(b)?(l)=0:(NEWGFPN(l),(l)->body=(b),(l))) |
#define MKGFPN(b,l) (!(b)?(l)=0:(NEWGFPN(l),(l)->body=(b),(l))) |
Line 694 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
Line 804 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
#define MKBYTEARRAY(m,l) \ |
#define MKBYTEARRAY(m,l) \ |
(NEWBYTEARRAY(m),(m)->len=(l),(m)->body=(char *)MALLOC_ATOMIC((l)),bzero((m)->body,(l))) |
(NEWBYTEARRAY(m),(m)->len=(l),(m)->body=(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)) |
|
#define MKQUOTEARG(q,t,b) (NEWQUOTEARG(q),(q)->type=(t),(q)->body=(pointer)(b)) |
|
|
#define NEXTDC(r,c) \ |
#define NEXTDC(r,c) \ |
if(!(r)){NEWDC(r);(c)=(r);}else{NEWDC(NEXT(c));(c)=NEXT(c);} |
if(!(r)){NEWDC(r);(c)=(r);}else{NEWDC(NEXT(c));(c)=NEXT(c);} |
Line 745 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
Line 856 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
#define MKAlg(b,r) \ |
#define MKAlg(b,r) \ |
(!(b)?((r)=0):NUM(b)?((r)=(Alg)(b)):(NEWAlg(r),BDY(r)=(Obj)(b),(r))) |
(!(b)?((r)=0):NUM(b)?((r)=(Alg)(b)):(NEWAlg(r),BDY(r)=(Obj)(b),(r))) |
|
|
#if PARI |
#if defined(PARI) |
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):BIGFLOAT(a)?rtodbl(BDY((BF)a)):0) |
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):BIGFLOAT(a)?rtodbl(BDY((BF)a)):0) |
#else |
#else |
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):0.0) |
#define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):0.0) |
Line 813 if(!(r)){(c)=(r)=(s);}else{NEXT(c)=(s);(c)=(s);} |
|
Line 924 if(!(r)){(c)=(r)=(s);}else{NEXT(c)=(s);(c)=(s);} |
|
#define _FREEMP(m) NEXT(m)=_mp_free_list; _mp_free_list=(m) |
#define _FREEMP(m) NEXT(m)=_mp_free_list; _mp_free_list=(m) |
#define _FREEDP(m) BDY(m)=(MP)_dp_free_list; _dp_free_list=(m) |
#define _FREEDP(m) BDY(m)=(MP)_dp_free_list; _dp_free_list=(m) |
|
|
|
#define MUL_WEIGHT(a,i) (current_dl_weight_vector?(a)*current_dl_weight_vector[i]:(a)) |
|
|
/* externals */ |
/* externals */ |
#if 0 |
#if 0 |
double NatToReal(); |
double NatToReal(); |
Line 832 extern VL CO,ALG; |
|
Line 945 extern VL CO,ALG; |
|
extern VL PVL; |
extern VL PVL; |
extern R ONER; |
extern R ONER; |
extern Q ONE; |
extern Q ONE; |
|
extern Q TWO; |
extern MQ ONEM; |
extern MQ ONEM; |
extern LM ONELM; |
extern LM ONELM; |
extern N ONEN; |
extern N ONEN; |
Line 869 extern int *current_gfs_plus1; |
|
Line 983 extern int *current_gfs_plus1; |
|
extern int *current_gfs_ntoi; |
extern int *current_gfs_ntoi; |
extern int *current_gfs_iton; |
extern int *current_gfs_iton; |
|
|
|
extern int *current_dl_weight_vector; |
|
|
/* prototypes */ |
/* prototypes */ |
int compui(VL,USINT,USINT); |
int compui(VL,USINT,USINT); |
int compbytearray(VL,BYTEARRAY,BYTEARRAY); |
int compbytearray(VL,BYTEARRAY,BYTEARRAY); |
Line 955 void square_rem_tab_up_gf2n(UP,UP *,UP *); |
|
Line 1071 void square_rem_tab_up_gf2n(UP,UP *,UP *); |
|
void powertabup_gf2n(UP,UP,UP *); |
void powertabup_gf2n(UP,UP,UP *); |
void find_root_gf2n(UP,GF2N *); |
void find_root_gf2n(UP,GF2N *); |
|
|
|
int cmpdl_composite(int,DL,DL); |
int cmpdl_matrix(int,DL,DL); |
int cmpdl_matrix(int,DL,DL); |
int cmpdl_order_pair(int,DL,DL); |
int cmpdl_order_pair(int,DL,DL); |
int cmpdl_elim(int,DL,DL); |
int cmpdl_elim(int,DL,DL); |
Line 983 void dtop(VL,VL,DP,P *); |
|
Line 1100 void dtop(VL,VL,DP,P *); |
|
void ptod(VL,VL,P,DP *); |
void ptod(VL,VL,P,DP *); |
void initd(struct order_spec *); |
void initd(struct order_spec *); |
|
|
|
void adddv(VL,DPV,DPV,DPV *); |
|
void subdv(VL,DPV,DPV,DPV *); |
|
void muldv(VL,DP,DPV,DPV *); |
|
void chsgndv(DPV,DPV *); |
|
int compdv(VL,DPV,DPV); |
|
|
void _printdp(DP); |
void _printdp(DP); |
void _dp_sp_mod(DP,DP,int,DP *); |
void _dp_sp_mod(DP,DP,int,DP *); |
void _dp_mod(DP,int,NODE,DP *); |
void _dp_mod(DP,int,NODE,DP *); |
Line 1412 void dtestroot(int,int,P,LUM,struct oDUM *,DCP *); |
|
Line 1535 void dtestroot(int,int,P,LUM,struct oDUM *,DCP *); |
|
void dtestroot1(int,int,P,LUM,P *); |
void dtestroot1(int,int,P,LUM,P *); |
void dtestsq(int,int,P,LUM,P *); |
void dtestsq(int,int,P,LUM,P *); |
void dtestsql(P,ML,struct oDUM *,DCP *); |
void dtestsql(P,ML,struct oDUM *,DCP *); |
|
void ediffp(VL,P,V,P *); |
void estimatelc(VL,Q,DCP,VN,P *); |
void estimatelc(VL,Q,DCP,VN,P *); |
void eucum(register int,UM,UM,UM,UM); |
void eucum(register int,UM,UM,UM,UM); |
void exthp(VL,P,int,P *); |
void exthp(VL,P,int,P *); |
Line 1852 int berlekampsf(UM p,int df,UM *tab,UM *r); |
|
Line 1976 int berlekampsf(UM p,int df,UM *tab,UM *r); |
|
void minipolysf(UM f,UM p,UM mp); |
void minipolysf(UM f,UM p,UM mp); |
int find_rootsf(UM p,int *root); |
int find_rootsf(UM p,int *root); |
void canzassf(UM f,int d,UM *r); |
void canzassf(UM f,int d,UM *r); |
void sfhensel(int count,P f,V x,int degbound,GFS *evp,P *sfp,ML *listp); |
void sfhensel(int count,P f,V x,V y,int degbound,GFS *evp,P *sfp,ML *listp); |
int sfberle(VL vl,P f,int count,GFS *ev,DCP *dcp); |
int sfberle(V x,V y,P f,int count,GFS *ev,DCP *dcp); |
void sfgcdgen(P f,ML blist,ML *clistp); |
void sfgcdgen(P f,ML blist,ML *clistp); |
void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp); |
void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp); |
void ptosfbm(int dy,P f,BM fl); |
void ptosfbm(int dy,P f,BM fl); |