version 1.10, 2004/10/06 11:58:52 |
version 1.14, 2006/04/17 04:35:20 |
|
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.h,v 1.13 2005/08/03 06:10:48 noro Exp $ */ |
#include "ca.h" |
#include "ca.h" |
#include "parse.h" |
#include "parse.h" |
#include "ox.h" |
#include "ox.h" |
Line 45 typedef struct oNDV { |
|
Line 46 typedef struct oNDV { |
|
|
|
typedef union oNDC { |
typedef union oNDC { |
int m; |
int m; |
Z z; |
Q z; |
P p; |
P p; |
|
DAlg a; |
} *NDC; |
} *NDC; |
|
|
/* monomial; linked list rep. */ |
/* monomial; linked list rep. */ |
Line 131 extern int *current_weyl_weight_vector; |
|
Line 133 extern int *current_weyl_weight_vector; |
|
#define HDL(d) ((d)->body->dl) |
#define HDL(d) ((d)->body->dl) |
#define HTD(d) (TD(HDL(d))) |
#define HTD(d) (TD(HDL(d))) |
#define HCM(d) ((d)->body->c.m) |
#define HCM(d) ((d)->body->c.m) |
#define HCZ(d) ((d)->body->c.z) |
#define HCQ(d) ((d)->body->c.z) |
#define HCP(d) ((d)->body->c.p) |
#define HCP(d) ((d)->body->c.p) |
#define CM(a) ((a)->c.m) |
#define HCA(d) ((d)->body->c.a) |
#define CZ(a) ((a)->c.z) |
#define CM(x) ((x)->c.m) |
#define CP(a) ((a)->c.p) |
#define CQ(x) ((x)->c.z) |
#define DL(a) ((a)->dl) |
#define CP(x) ((x)->c.p) |
#define SG(a) ((a)->sugar) |
#define CA(x) ((x)->c.a) |
#define LEN(a) ((a)->len) |
#define DL(x) ((x)->dl) |
#define LCM(a) ((a)->lcm) |
#define SG(x) ((x)->sugar) |
|
#define LEN(x) ((x)->len) |
|
#define LCM(x) ((x)->lcm) |
#define GET_EXP(d,a) (((d)[nd_epos[a].i]>>nd_epos[a].s)&nd_mask0) |
#define GET_EXP(d,a) (((d)[nd_epos[a].i]>>nd_epos[a].s)&nd_mask0) |
#define GET_EXP_MASK(d,a,m) ((((d)[nd_epos[a].i]&(m)[nd_epos[a].i])>>nd_epos[a].s)&nd_mask0) |
#define GET_EXP_MASK(d,a,m) ((((d)[nd_epos[a].i]&(m)[nd_epos[a].i])>>nd_epos[a].s)&nd_mask0) |
#define PUT_EXP(r,a,e) ((r)[nd_epos[a].i] |= ((e)<<nd_epos[a].s)) |
#define PUT_EXP(r,a,e) ((r)[nd_epos[a].i] |= ((e)<<nd_epos[a].s)) |
Line 214 NODE append_one(NODE,int); |
|
Line 218 NODE append_one(NODE,int); |
|
/* manipulation of coefficients */ |
/* manipulation of coefficients */ |
void nd_removecont(int mod,ND p); |
void nd_removecont(int mod,ND p); |
void nd_removecont2(ND p1,ND p2); |
void nd_removecont2(ND p1,ND p2); |
void removecont_array(Z *c,int n); |
void removecont_array(Q *c,int n); |
|
|
/* GeoBucket functions */ |
/* GeoBucket functions */ |
ND normalize_pbucket(int mod,PGeoBucket g); |
ND normalize_pbucket(int mod,PGeoBucket g); |
int head_pbucket(int mod,PGeoBucket g); |
int head_pbucket(int mod,PGeoBucket g); |
int head_pbucket_z(PGeoBucket g); |
int head_pbucket_q(PGeoBucket g); |
void add_pbucket_symbolic(PGeoBucket g,ND d); |
void add_pbucket_symbolic(PGeoBucket g,ND d); |
void add_pbucket(int mod,PGeoBucket g,ND d); |
void add_pbucket(int mod,PGeoBucket g,ND d); |
void free_pbucket(PGeoBucket b); |
void free_pbucket(PGeoBucket b); |
void mulz_pbucket(PGeoBucket g,Z c); |
void mulq_pbucket(PGeoBucket g,Q c); |
NM remove_head_pbucket_symbolic(PGeoBucket g); |
NM remove_head_pbucket_symbolic(PGeoBucket g); |
PGeoBucket create_pbucket(); |
PGeoBucket create_pbucket(); |
|
|
Line 270 INLINE int ndl_hash_value(UINT *d); |
|
Line 274 INLINE int ndl_hash_value(UINT *d); |
|
/* normal forms */ |
/* normal forms */ |
INLINE int ndl_find_reducer(UINT *g); |
INLINE int ndl_find_reducer(UINT *g); |
int nd_sp(int mod,int trace,ND_pairs p,ND *nf); |
int nd_sp(int mod,int trace,ND_pairs p,ND *nf); |
int nd_nf(int mod,ND g,NDV *ps,int full,Q *dn,ND *nf); |
int nd_nf(int mod,ND g,NDV *ps,int full,NDC dn,ND *nf); |
int nd_nf_pbucket(int mod,ND g,NDV *ps,int full,ND *nf); |
int nd_nf_pbucket(int mod,ND g,NDV *ps,int full,ND *nf); |
|
|
/* finalizers */ |
/* finalizers */ |
Line 287 void nd_free_redlist(); |
|
Line 291 void nd_free_redlist(); |
|
/* printing */ |
/* printing */ |
void ndl_print(UINT *dl); |
void ndl_print(UINT *dl); |
void nd_print(ND p); |
void nd_print(ND p); |
void nd_print_z(ND p); |
void nd_print_q(ND p); |
void ndp_print(ND_pairs d); |
void ndp_print(ND_pairs d); |
|
|
|
|
/* setup, reconstruct */ |
/* setup, reconstruct */ |
void nd_init_ord(struct order_spec *spec); |
void nd_init_ord(struct order_spec *spec); |
ND_pairs nd_reconstruct(int trace,ND_pairs ndp); |
ND_pairs nd_reconstruct(int trace,ND_pairs ndp); |
void ndv_setup(int mod,int trace,NODE f); |
void ndv_setup(int mod,int trace,NODE f,int dont_sort); |
void nd_setup_parameters(int nvar,int max); |
void nd_setup_parameters(int nvar,int max); |
BlockMask nd_create_blockmask(struct order_spec *ord); |
BlockMask nd_create_blockmask(struct order_spec *ord); |
EPOS nd_create_epos(struct order_spec *ord); |
EPOS nd_create_epos(struct order_spec *ord); |
Line 306 ND nd_dup(ND p); |
|
Line 310 ND nd_dup(ND p); |
|
/* ND functions */ |
/* ND functions */ |
int ndv_check_candidate(NODE input,int obpe,int oadv,EPOS oepos,NODE cand); |
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(int mod,ND p,int mul); |
void nd_mul_c_z(ND p,Z mul); |
void nd_mul_c_q(ND p,Q mul); |
void nd_mul_c_p(VL vl,ND p,P mul); |
void nd_mul_c_p(VL vl,ND p,P mul); |
ND nd_remove_head(ND p); |
ND nd_remove_head(ND p); |
ND nd_separate_head(ND p,ND *head); |
ND nd_separate_head(ND p,ND *head); |
Line 317 UINT *nd_compute_bound(ND p); |
|
Line 321 UINT *nd_compute_bound(ND p); |
|
ND nd_copy(ND p); |
ND nd_copy(ND p); |
ND nd_merge(ND p1,ND p2); |
ND nd_merge(ND p1,ND p2); |
ND nd_add(int mod,ND p1,ND p2); |
ND nd_add(int mod,ND p1,ND p2); |
ND nd_add_z(ND p1,ND p2); |
ND nd_add_q(ND p1,ND p2); |
ND nd_add_sf(ND p1,ND p2); |
ND nd_add_sf(ND p1,ND p2); |
ND nd_quo(int mod,PGeoBucket p,NDV d); |
ND nd_quo(int mod,PGeoBucket p,NDV d); |
INLINE int nd_length(ND p); |
INLINE int nd_length(ND p); |
Line 325 NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col |
|
Line 329 NODE nd_f4_red(int m,ND_pairs sp0,UINT *s0vect,int col |
|
NODE nd_f4_red_dist(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_main(int m,ND_pairs sp0,int nsp,UINT *s0vect,int col, |
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); |
NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred); |
NODE nd_f4_red_z_main(ND_pairs sp0,int nsp,UINT *s0vect,int col, |
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); |
NM_ind_pair *rvect,int *rhead,IndArray *imat,int nred); |
|
|
/* NDV functions */ |
/* NDV functions */ |
ND weyl_ndv_mul_nm(int mod,NM m0,NDV p); |
ND weyl_ndv_mul_nm(int mod,NM m0,NDV p); |
void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *tab,int tlen); |
void weyl_mul_nm_nmv(int n,int mod,NM m0,NMV m1,NM *tab,int tlen); |
void ndv_mul_c(int mod,NDV p,int mul); |
void ndv_mul_c(int mod,NDV p,int mul); |
void ndv_mul_c_z(NDV p,Z mul); |
void ndv_mul_c_q(NDV p,Q mul); |
ND ndv_mul_nm_symbolic(NM m0,NDV p); |
ND ndv_mul_nm_symbolic(NM m0,NDV p); |
ND ndv_mul_nm(int mod,NM m0,NDV p); |
ND ndv_mul_nm(int mod,NM m0,NDV p); |
ND ndv_mul_nmv_trunc(int mod,NMV m0,NDV p,UINT *d); |
ND ndv_mul_nmv_trunc(int mod,NMV m0,NDV p,UINT *d); |
Line 342 void ndv_homogenize(NDV p,int obpe,int oadv,EPOS eops) |
|
Line 346 void ndv_homogenize(NDV p,int obpe,int oadv,EPOS eops) |
|
void ndv_dehomogenize(NDV p,struct order_spec *spec); |
void ndv_dehomogenize(NDV p,struct order_spec *spec); |
void ndv_removecont(int mod,NDV p); |
void ndv_removecont(int mod,NDV p); |
void ndv_print(NDV p); |
void ndv_print(NDV p); |
void ndv_print_z(NDV p); |
void ndv_print_q(NDV p); |
void ndv_free(NDV p); |
void ndv_free(NDV p); |
void ndv_save(NDV p,int index); |
void ndv_save(NDV p,int index); |
NDV ndv_load(int index); |
NDV ndv_load(int index); |
Line 353 NDV ptondv(VL vl,VL dvl,P p); |
|
Line 357 NDV ptondv(VL vl,VL dvl,P p); |
|
P ndvtop(int mod,VL vl,VL dvl,NDV p); |
P ndvtop(int mod,VL vl,VL dvl,NDV p); |
NDV ndtondv(int mod,ND p); |
NDV ndtondv(int mod,ND p); |
ND ndvtond(int mod,NDV p); |
ND ndvtond(int mod,NDV p); |
int nm_ind_pair_to_vect(int m,UINT *s0,int n,NM_ind_pair pair,UINT *r); |
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,NM_ind_pair pair); |
int nd_to_vect(int mod,UINT *s0,int n,ND d,UINT *r); |
int nd_to_vect(int mod,UINT *s0,int n,ND d,UINT *r); |
int nd_to_vect_z(UINT *s0,int n,ND d,Z *r); |
int nd_to_vect_q(UINT *s0,int n,ND d,Q *r); |
NDV vect_to_ndv_z(Z *vect,int spcol,int col,int *rhead,UINT *s0vect); |
NDV vect_to_ndv_q(Q *vect,int spcol,int col,int *rhead,UINT *s0vect); |
|
|
/* elimination */ |
/* 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,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_sf(int **mat0,int *sugar,int row,int col,int md,int *colstat); |
int nd_gauss_elim_z(Z **mat0,int *sugar,int row,int col,int *colstat); |
int nd_gauss_elim_q(Q **mat0,int *sugar,int row,int col,int *colstat); |
|
|
int ndl_ww_lex_compare(UINT *a1,UINT *a2); |
int ndl_ww_lex_compare(UINT *a1,UINT *a2); |
|
|