=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/engine/nd.h,v retrieving revision 1.9 retrieving revision 1.12 diff -u -p -r1.9 -r1.12 --- OpenXM_contrib2/asir2018/engine/nd.h 2020/06/30 01:52:17 1.9 +++ OpenXM_contrib2/asir2018/engine/nd.h 2021/11/29 09:19:33 1.12 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.h,v 1.8 2020/06/19 10:18:13 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2018/engine/nd.h,v 1.11 2020/10/26 02:41:05 noro Exp $ */ #include "ca.h" #include "parse.h" #include "ox.h" @@ -30,7 +30,7 @@ typedef struct oPGeoBucket { typedef struct oSIG { int pos; - DL dl; + DL dl,dl2; } *SIG; /* distributed polynomial; linked list rep. */ @@ -89,6 +89,7 @@ typedef struct oND_pairs { int sugar; int sugar2; SIG sig; + int zero; UINT lcm[1]; } *ND_pairs; @@ -163,6 +164,7 @@ extern int *current_module_weight_vector; #define CP(x) ((x)->c.p) #define CA(x) ((x)->c.a) #define DL(x) ((x)->dl) +#define DL2(x) ((x)->dl2) #define SG(x) ((x)->sugar) #define LEN(x) ((x)->len) #define LCM(x) ((x)->lcm) @@ -196,7 +198,7 @@ extern int *current_module_weight_vector; ((r)=(RHist)MALLOC(sizeof(struct oRHist)+(nd_wpd-1)*sizeof(UINT))) #define NEWND_pairs(m) \ if(!_ndp_free_list)_NDP_alloc();\ -(m)=_ndp_free_list; _ndp_free_list = NEXT(_ndp_free_list) +(m)=_ndp_free_list; (m)->zero = 0; _ndp_free_list = NEXT(_ndp_free_list) #define NEWNM(m)\ if(!_nm_free_list)_NM_alloc();\ (m)=_nm_free_list; _nm_free_list = NEXT(_nm_free_list) @@ -209,7 +211,7 @@ NV(d)=(n); LEN(d)=(len); BDY(d)=(m) #define NEWNM_ind_pair(p)\ ((p)=(NM_ind_pair)MALLOC(sizeof(struct oNM_ind_pair))) #define NEWSIG(r) \ -((r)=(SIG)MALLOC(sizeof(struct oSIG)),NEWDL((r)->dl,nd_nvar)) +((r)=(SIG)MALLOC(sizeof(struct oSIG)),NEWDL((r)->dl,nd_nvar),NEWDL((r)->dl2,nd_nvar)) /* allocate and link a new object */ #define NEXTRHist(r,c) \ @@ -328,6 +330,7 @@ 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 nd_reconstruct_s(int trace,ND_pairs *ndp); int ndv_setup(int mod,int trace,NODE f,int dont_sort,int dont_removecont,int sba); void nd_setup_parameters(int nvar,int max); BlockMask nd_create_blockmask(struct order_spec *ord);