=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/include/ca.h,v retrieving revision 1.31 retrieving revision 1.38 diff -u -p -r1.31 -r1.38 --- OpenXM_contrib2/asir2000/include/ca.h 2001/12/21 08:23:12 1.31 +++ OpenXM_contrib2/asir2000/include/ca.h 2003/10/20 07:18:42 1.38 @@ -45,17 +45,18 @@ * 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.30 2001/11/19 00:57:12 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/include/ca.h,v 1.37 2003/07/09 07:11:09 noro Exp $ */ #include +#include #if defined(hpux) #include # define setbuffer(FP,buf,siz) setvbuf(FP,buf,_IOFBF,siz) #endif -#if defined(VISUAL) -#include +#if !defined(VISUAL) +#include #endif #if !defined(VISUAL) @@ -81,12 +82,16 @@ typedef caddr_t pointer; typedef void * pointer; -#if defined(VISUAL) +#if defined(sun) +#include +#else #include +#if defined(VISUAL) #define index(s,c) strchr(s,c) #define bzero(s,len) memset(s,0,len) #define bcopy(x,y,len) memcpy(y,x,len) #endif +#endif #define COPY(a,b) ((b)=(a)) #define FREEN(p) @@ -131,7 +136,7 @@ typedef void * pointer; #define ORD_GRADLEX 1 #define ORD_LEX 2 -#if LONG_IS_32BIT +#if defined(LONG_IS_32BIT) #if defined(VISUAL) typedef _int64 L; typedef unsigned _int64 UL; @@ -414,6 +419,11 @@ typedef struct oDLBUCKET { struct oDLBUCKET *next; } *DLBUCKET; +typedef struct oGeoBucket { + int m; + struct oNODE *body[32]; +} *GeoBucket; + typedef struct oVL { V v; struct oVL *next; @@ -512,7 +522,7 @@ struct oEGT { #define INDEX 100 -#if USE_FLOAT +#if defined(USE_FLOAT) typedef float ModNum; #define NPrimes 536 #else @@ -566,12 +576,23 @@ typedef unsigned int ModNum; #endif #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) #else #define ALLOCA(d) MALLOC(d) #endif +/* for setjmp/longjmp compatibility */ +#if defined(__CYGWIN__) +#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 NALLOC(d) ((N)MALLOC_ATOMIC(TRUESIZE(oN,(d)-1,int))) #define UMALLOC(d) ((UM)MALLOC(TRUESIZE(oUM,d,int))) @@ -745,7 +766,7 @@ PL(NM(q))=1,BD(NM(q))[0]=(unsigned int)(n),DN(q)=0,(q) #define MKAlg(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) #else #define ToReal(a) (!(a)?(double)0.0:REAL(a)?BDY((Real)a):RATN(a)?RatnToReal((Q)a):0.0) @@ -813,6 +834,8 @@ if(!(r)){(c)=(r)=(s);}else{NEXT(c)=(s);(c)=(s);} #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 MUL_WEIGHT(a,i) (current_dl_weight_vector?(a)*current_dl_weight_vector[i]:(a)) + /* externals */ #if 0 double NatToReal(); @@ -832,6 +855,7 @@ extern VL CO,ALG; extern VL PVL; extern R ONER; extern Q ONE; +extern Q TWO; extern MQ ONEM; extern LM ONELM; extern N ONEN; @@ -869,6 +893,8 @@ extern int *current_gfs_plus1; extern int *current_gfs_ntoi; extern int *current_gfs_iton; +extern int *current_dl_weight_vector; + /* prototypes */ int compui(VL,USINT,USINT); int compbytearray(VL,BYTEARRAY,BYTEARRAY); @@ -1852,8 +1878,8 @@ int berlekampsf(UM p,int df,UM *tab,UM *r); void minipolysf(UM f,UM p,UM mp); int find_rootsf(UM p,int *root); void canzassf(UM f,int d,UM *r); -void sfhensel(int count,P f,V x,int degbound,GFS *evp,P *sfp,ML *listp); -int sfberle(VL vl,P f,int count,GFS *ev,DCP *dcp); +void sfhensel(int count,P f,V x,V y,int degbound,GFS *evp,P *sfp,ML *listp); +int sfberle(V x,V y,P f,int count,GFS *ev,DCP *dcp); void sfgcdgen(P f,ML blist,ML *clistp); void sfhenmain2(BM f,UM g0,UM h0,int dy,BM *gp); void ptosfbm(int dy,P f,BM fl);