version 1.45, 2004/02/09 08:23:29 |
version 1.52, 2004/10/06 11:58:52 |
|
|
* 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.44 2004/02/05 08:28:53 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.51 2004/08/18 00:17:02 noro Exp $ |
*/ |
*/ |
#include <stdio.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
Line 121 typedef void * pointer; |
|
Line 121 typedef void * pointer; |
|
#define O_OPTLIST 18 |
#define O_OPTLIST 18 |
#define O_SYMBOL 19 |
#define O_SYMBOL 19 |
#define O_RANGE 20 |
#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 139 typedef void * pointer; |
|
Line 142 typedef void * pointer; |
|
#define ORD_GRADLEX 1 |
#define ORD_GRADLEX 1 |
#define ORD_LEX 2 |
#define ORD_LEX 2 |
|
|
|
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(LONG_IS_32BIT) |
#if defined(VISUAL) |
#if defined(VISUAL) |
typedef _int64 L; |
typedef _int64 L; |
Line 157 typedef struct oN { |
|
Line 164 typedef struct oN { |
|
unsigned int b[1]; |
unsigned int b[1]; |
} *N; |
} *N; |
|
|
|
typedef struct oZ { |
|
int p; |
|
unsigned int b[1]; |
|
} *Z; |
|
|
typedef struct oUP2 { |
typedef struct oUP2 { |
int w; |
int w; |
unsigned int b[1]; |
unsigned int b[1]; |
Line 326 typedef struct oDP { |
|
Line 338 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 357 typedef struct oQUOTE { |
|
Line 376 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 { |
typedef struct oOPTLIST { |
short id; |
short id; |
short pad; |
short pad; |
Line 376 typedef struct oRANGE { |
|
Line 402 typedef struct oRANGE { |
|
struct oObj *start,*end; |
struct oObj *start,*end; |
} *RANGE; |
} *RANGE; |
|
|
|
typedef struct oTB { |
|
short id; |
|
short pad; |
|
int size,next; |
|
char **body; |
|
} *TB; |
|
|
typedef struct oObj { |
typedef struct oObj { |
short id; |
short id; |
Line 548 struct order_spec { |
|
Line 580 struct order_spec { |
|
} 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 { |
Line 703 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
Line 743 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 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 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 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 736 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
Line 779 bzero((char *)(q)->b,(w)*sizeof(unsigned int))) |
|
((d)=(DL)MALLOC_ATOMIC(TRUESIZE(oDL,(n)-1,int))) |
((d)=(DL)MALLOC_ATOMIC(TRUESIZE(oDL,(n)-1,int))) |
|
|
#define MKP(v,dc,p) \ |
#define MKP(v,dc,p) \ |
(!DEG(dc)?((p)=COEF(dc)):(NEWP(p),VR(p)=(v),DC(p)=(dc),(p))) |
((!DEG(dc)&&!NEXT(dc))?((p)=COEF(dc)):(NEWP(p),VR(p)=(v),DC(p)=(dc),(p))) |
#define MKV(v,p) \ |
#define MKV(v,p) \ |
(NEWP(p),VR(p)=(v),NEWDC(DC(p)),\ |
(NEWP(p),VR(p)=(v),NEWDC(DC(p)),\ |
DEG(DC(p))=ONE,COEF(DC(p))=(P)ONE,NEXT(DC(p))=0) |
DEG(DC(p))=ONE,COEF(DC(p))=(P)ONE,NEXT(DC(p))=0) |
Line 756 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
Line 799 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 765 DEG(DC(p))=ONE,COEF(DC(p))=(P)ONEM,NEXT(DC(p))=0) |
|
Line 809 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 816 PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) |
|
Line 861 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))) |
|
|
|
#define IMM_MAX 1073741823 |
|
#define IMM_MIN -1073741823 |
|
|
|
#define SL(n) ((n)->p) |
|
#define ZALLOC(d) ((Z)MALLOC_ATOMIC(TRUESIZE(oZ,(d)-1,int))) |
|
|
#if defined(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 |
Line 1060 void dtop(VL,VL,DP,P *); |
|
Line 1111 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 2440 void afctrmain(VL vl,P p0,P p,int init,DCP *dcp); |
|
Line 2497 void afctrmain(VL vl,P p0,P p,int init,DCP *dcp); |
|
int divtmp(VL vl,int mod,P p1,P p2,P *q); |
int divtmp(VL vl,int mod,P p1,P p2,P *q); |
int divtdcmp(VL vl,int mod,P p1,P p2,P *q); |
int divtdcmp(VL vl,int mod,P p1,P p2,P *q); |
void GC_gcollect(); |
void GC_gcollect(); |
|
|
|
Z stoz(int c); |
|
Z utoz(unsigned int c); |
|
Z qtoz(Q n); |
|
Q ztoq(Z n); |
|
Z chsgnz(Z n); |
|
Z simpz(Z n); |
|
Z dupz(Z n); |
|
Z absz(Z n); |
|
Z addz(Z n1,Z n2); |
|
Z subz(Z n1,Z n2); |
|
Z mulz(Z n1,Z n2); |
|
Z divsz(Z n1,Z n2); |
|
Z divz(Z n1,Z n2,Z *rem); |
|
Z gcdz(Z n1,Z n2); |
|
Z gcdz_cofactor(Z n1,Z n2,Z *c1,Z *c2); |
|
Z estimate_array_gcdz(Z *a,int n); |
|
Z array_gcdz(Z *a,int n); |
|
void mkwcz(int k,int l,Z *t); |
|
int remzi(Z n,int m); |
|
|
|
|
#if 0 && !defined(VISUAL) |
#if 0 && !defined(VISUAL) |
void bzero(const void *,int); |
void bzero(const void *,int); |