=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/include/ca.h,v retrieving revision 1.47 retrieving revision 1.49 diff -u -p -r1.47 -r1.49 --- OpenXM_contrib2/asir2000/include/ca.h 2004/03/09 08:02:01 1.47 +++ OpenXM_contrib2/asir2000/include/ca.h 2004/05/14 06:02:54 1.49 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.46 2004/03/03 09:25:30 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.48 2004/03/10 02:41:08 noro Exp $ */ #include #include @@ -122,6 +122,7 @@ typedef void * pointer; #define O_SYMBOL 19 #define O_RANGE 20 #define O_TB 21 +#define O_DPV 22 #define O_VOID -1 #define N_Q 0 @@ -327,6 +328,13 @@ typedef struct oDP { struct oMP *body; } *DP; +typedef struct oDPV { + short id; + int len; + int sugar; + struct oDP **body; +} *DPV; + typedef struct oUSINT { short id; short pad; @@ -356,7 +364,6 @@ typedef struct oQUOTE { short id; short pad; pointer body; - struct oNODE *attr; } *QUOTE; typedef struct oOPTLIST { @@ -556,6 +563,14 @@ struct order_spec { } ord; }; +struct modorder_spec { + /* id : ORD_REVGRADLEX, ORD_GRADLEX, ORD_LEX */ + int id; + Obj obj; + int len; + int *degree_shift; +}; + /* structure for cputime */ struct oEGT { @@ -711,6 +726,7 @@ bzero((char *)(q)->b,(w)*sizeof(unsigned int))) #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 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 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) @@ -765,6 +781,7 @@ 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 MKSTR(a,b) (NEWSTR(a),(a)->body=(char *)(b)) #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 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))) @@ -773,7 +790,7 @@ DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) #define MKMATHCAP(e,b) (NEWMATHCAP(e),(e)->body=(LIST)(b)) #define MKBYTEARRAY(m,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),(q)->attr=0) +#define MKQUOTE(q,b) (NEWQUOTE(q),(q)->body=(pointer)(b)) #define NEXTDC(r,c) \ if(!(r)){NEWDC(r);(c)=(r);}else{NEWDC(NEXT(c));(c)=NEXT(c);} @@ -1068,6 +1085,12 @@ void nodetod(NODE,DP *); void dtop(VL,VL,DP,P *); void ptod(VL,VL,P,DP *); 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 _dp_sp_mod(DP,DP,int,DP *);