=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/nd.h,v retrieving revision 1.14 retrieving revision 1.16 diff -u -p -r1.14 -r1.16 --- OpenXM_contrib2/asir2000/engine/nd.h 2006/04/17 04:35:20 1.14 +++ OpenXM_contrib2/asir2000/engine/nd.h 2006/11/27 07:31:26 1.16 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.h,v 1.13 2005/08/03 06:10:48 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.h,v 1.15 2006/06/05 08:11:10 noro Exp $ */ #include "ca.h" #include "parse.h" #include "ox.h" @@ -48,6 +48,7 @@ typedef union oNDC { int m; Q z; P p; + R r; DAlg a; } *NDC; @@ -218,7 +219,8 @@ NODE append_one(NODE,int); /* manipulation of coefficients */ void nd_removecont(int mod,ND p); void nd_removecont2(ND p1,ND p2); -void removecont_array(Q *c,int n); +void removecont_array(P *c,int n); +void removecont_array_q(Q *c,int n); /* GeoBucket functions */ ND normalize_pbucket(int mod,PGeoBucket g); @@ -247,10 +249,11 @@ int ndv_newps(int m,NDV a,NDV aq); /* top level functions */ void nd_gr(LIST f,LIST v,int m,int f4,struct order_spec *ord,LIST *rp); -void nd_gr_trace(LIST f,LIST v,int trace,int homo,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); NODE nd_gb(int m,int ishomo,int checkonly); NODE nd_gb_trace(int m,int ishomo); +NODE nd_f4_trace(int m); /* ndl functions */ int ndl_weight(UINT *d); @@ -274,7 +277,7 @@ INLINE int ndl_hash_value(UINT *d); /* normal forms */ INLINE int ndl_find_reducer(UINT *g); int nd_sp(int mod,int trace,ND_pairs p,ND *nf); -int nd_nf(int mod,ND g,NDV *ps,int full,NDC dn,ND *nf); +int nd_nf(int mod,ND d,ND g,NDV *ps,int full,NDC dn,ND *nf); int nd_nf_pbucket(int mod,ND g,NDV *ps,int full,ND *nf); /* finalizers */ @@ -310,7 +313,7 @@ ND nd_dup(ND p); /* ND functions */ int ndv_check_candidate(NODE input,int obpe,int oadv,EPOS oepos,NODE cand); void nd_mul_c(int mod,ND p,int mul); -void nd_mul_c_q(ND p,Q mul); +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); @@ -325,12 +328,12 @@ ND nd_add_q(ND p1,ND p2); ND nd_add_sf(ND p1,ND p2); ND nd_quo(int mod,PGeoBucket p,NDV d); INLINE int nd_length(ND p); -NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col,NODE rp0); -NODE nd_f4_red_dist(int m,ND_pairs sp0,UINT *s0vect,int col,NODE rp0); +NODE nd_f4_red(int m,ND_pairs sp0,int trace,UINT *s0vect,int col,NODE rp0,ND_pairs *nz); +NODE nd_f4_red_dist(int m,ND_pairs sp0,UINT *s0vect,int col,NODE rp0, ND_pairs *nz); NODE nd_f4_red_main(int m,ND_pairs sp0,int nsp,UINT *s0vect,int col, + 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_q_main(ND_pairs sp0,int nsp,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); @@ -364,7 +367,7 @@ 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); /* elimination */ -int nd_gauss_elim_mod(int **mat0,int *sugar,int row,int col,int md,int *colstat); +int nd_gauss_elim_mod(int **mat0,int *sugar,ND_pairs *spactive,int row,int col,int md,int *colstat); int nd_gauss_elim_sf(int **mat0,int *sugar,int row,int col,int md,int *colstat); int nd_gauss_elim_q(Q **mat0,int *sugar,int row,int col,int *colstat);