=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/nd.h,v retrieving revision 1.25 retrieving revision 1.32 diff -u -p -r1.25 -r1.32 --- OpenXM_contrib2/asir2000/engine/nd.h 2009/02/15 03:07:41 1.25 +++ OpenXM_contrib2/asir2000/engine/nd.h 2015/08/06 10:01:52 1.32 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.h,v 1.24 2009/02/11 03:04:42 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.h,v 1.31 2013/12/20 02:02:24 noro Exp $ */ #include "ca.h" #include "parse.h" #include "ox.h" @@ -7,8 +7,8 @@ #include #if defined(__GNUC__) -#define INLINE inline -#elif defined(VISUAL) +#define INLINE static inline +#elif defined(VISUAL) || defined(__MINGW32__) || defined(__MINGW64__) #define INLINE __inline #else #define INLINE @@ -47,6 +47,7 @@ typedef struct oNDV { typedef union oNDC { int m; Q z; + GZ gz; P p; R r; DAlg a; @@ -142,10 +143,12 @@ extern int *current_module_weight_vector; #define HCU(d) ((d)->body->c) #define HCM(d) ((d)->body->c.m) #define HCQ(d) ((d)->body->c.z) +#define HCZ(d) ((d)->body->c.gz) #define HCP(d) ((d)->body->c.p) #define HCA(d) ((d)->body->c.a) #define CM(x) ((x)->c.m) #define CQ(x) ((x)->c.z) +#define CZ(x) ((x)->c.gz) #define CP(x) ((x)->c.p) #define CA(x) ((x)->c.a) #define DL(x) ((x)->dl) @@ -253,10 +256,10 @@ ND_pairs crit_B( ND_pairs d, int s ); ND_pairs crit_M( ND_pairs d1 ); ND_pairs crit_F( ND_pairs d1 ); int crit_2( int dp1, int dp2 ); -int ndv_newps(int m,NDV a,NDV aq); +int ndv_newps(int m,NDV a,NDV aq,int f4); /* top level functions */ -void nd_gr(LIST f,LIST v,int m,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_trace(LIST f,LIST v,int trace,int homo,int f4,struct order_spec *ord,LIST *rp); NODE nd_f4(int m,int **indp); NODE nd_gb(int m,int ishomo,int checkonly,int gensyz,int **indp); @@ -309,13 +312,14 @@ void ndp_print(ND_pairs d); /* setup, reconstruct */ void nd_init_ord(struct order_spec *spec); ND_pairs nd_reconstruct(int trace,ND_pairs ndp); -void ndv_setup(int mod,int trace,NODE f,int dont_sort,int dont_removecont); +int ndv_setup(int mod,int trace,NODE f,int dont_sort,int dont_removecont); void nd_setup_parameters(int nvar,int max); BlockMask nd_create_blockmask(struct order_spec *ord); EPOS nd_create_epos(struct order_spec *ord); int nd_get_exporigin(struct order_spec *ord); void ndv_mod(int mod,NDV p); NDV ndv_dup(int mod,NDV p); +NDV ndv_symbolic(int mod,NDV p); ND nd_dup(ND p); /* ND functions */ @@ -325,7 +329,7 @@ void nd_mul_c_q(ND p,P mul); void nd_mul_c_p(VL vl,ND p,P mul); ND nd_remove_head(ND p); ND nd_separate_head(ND p,ND *head); -int nd_length(ND p); +INLINE int nd_length(ND p); void nd_append_red(UINT *d,int i); UINT *ndv_compute_bound(NDV p); UINT *nd_compute_bound(ND p); @@ -342,6 +346,8 @@ NODE nd_f4_red_main(int m,ND_pairs sp0,int nsp,UINT *s NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred,ND_pairs *nz); NODE nd_f4_red_q_main(ND_pairs sp0,int nsp,int trace,UINT *s0vect,int col, NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred); +NODE nd_f4_red_gz_main(ND_pairs sp0,int nsp,int trace,UINT *s0vect,int col, + NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred); /* NDV functions */ ND weyl_ndv_mul_nm(int mod,NM m0,NDV p); @@ -369,7 +375,7 @@ P ndvtop(int mod,VL vl,VL dvl,NDV p); NDV ndtondv(int mod,ND p); ND ndvtond(int mod,NDV p); Q *nm_ind_pair_to_vect(int m,UINT *s0,int n,NM_ind_pair pair); -IndArray nm_ind_pair_to_vect_compress(int m,UINT *s0,int n,NM_ind_pair pair); +IndArray nm_ind_pair_to_vect_compress(int m,UINT *s0,int n,int *s0hash,NM_ind_pair pair); int nd_to_vect(int mod,UINT *s0,int n,ND d,UINT *r); int nd_to_vect_q(UINT *s0,int n,ND d,Q *r); NDV vect_to_ndv_q(Q *vect,int spcol,int col,int *rhead,UINT *s0vect);