version 1.72, 2003/09/17 08:14:26 |
version 1.73, 2003/09/17 08:37:49 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.71 2003/09/17 07:16:53 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.72 2003/09/17 08:14:26 noro Exp $ */ |
|
|
#include "ca.h" |
#include "ca.h" |
#include "inline.h" |
#include "inline.h" |
Line 2240 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
Line 2240 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
int e,max,nvar; |
int e,max,nvar; |
NDV b; |
NDV b; |
|
|
nd_free_private_storage(); |
|
get_vars((Obj)f,&fv); pltovl(v,&vv); |
get_vars((Obj)f,&fv); pltovl(v,&vv); |
nvar = length(vv); |
nvar = length(vv); |
nd_init_ord(ord); |
nd_init_ord(ord); |
Line 2285 void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru |
|
Line 2284 void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru |
|
nocheck = 0; |
nocheck = 0; |
mindex = 0; |
mindex = 0; |
|
|
nd_free_private_storage(); |
|
/* setup modulus */ |
/* setup modulus */ |
if ( trace < 0 ) { |
if ( trace < 0 ) { |
trace = -trace; |
trace = -trace; |
Line 2362 void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru |
|
Line 2360 void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru |
|
} |
} |
/* dp->p */ |
/* dp->p */ |
nd_bpe = cbpe; |
nd_bpe = cbpe; |
nd_setup_parameters(0,0); |
nd_setup_parameters(nd_nvar,0); |
for ( r = cand; r; r = NEXT(r) ) BDY(r) = (pointer)ndvtop(0,CO,vv,BDY(r)); |
for ( r = cand; r; r = NEXT(r) ) BDY(r) = (pointer)ndvtop(0,CO,vv,BDY(r)); |
MKLIST(*rp,cand); |
MKLIST(*rp,cand); |
} |
} |
Line 2744 int nd_get_exporigin(struct order_spec *ord) |
|
Line 2742 int nd_get_exporigin(struct order_spec *ord) |
|
void nd_setup_parameters(int nvar,int max) { |
void nd_setup_parameters(int nvar,int max) { |
int i,j,n,elen,ord_o,ord_l,l,s; |
int i,j,n,elen,ord_o,ord_l,l,s; |
struct order_pair *op; |
struct order_pair *op; |
|
int bpe; |
|
|
/* if max == 0, don't touch nd_bpe */ |
if ( !max ) bpe = nd_bpe; |
if ( max > 0 ) { |
else if ( max < 2 ) bpe = 1; |
if ( max < 2 ) nd_bpe = 1; |
else if ( max < 4 ) bpe = 2; |
if ( max < 4 ) nd_bpe = 2; |
else if ( max < 8 ) bpe = 3; |
else if ( max < 8 ) nd_bpe = 3; |
else if ( max < 16 ) bpe = 4; |
else if ( max < 16 ) nd_bpe = 4; |
else if ( max < 32 ) bpe = 5; |
else if ( max < 32 ) nd_bpe = 5; |
else if ( max < 64 ) bpe = 6; |
else if ( max < 64 ) nd_bpe = 6; |
else if ( max < 256 ) bpe = 8; |
else if ( max < 256 ) nd_bpe = 8; |
else if ( max < 1024 ) bpe = 10; |
else if ( max < 1024 ) nd_bpe = 10; |
else if ( max < 65536 ) bpe = 16; |
else if ( max < 65536 ) nd_bpe = 16; |
else bpe = 32; |
else nd_bpe = 32; |
if ( bpe != nd_bpe || nvar != nd_nvar ) |
} |
nd_free_private_storage(); |
/* nvar == 0, don't touch nd_nvar */ |
nd_bpe = bpe; |
if ( nvar > 0 ) nd_nvar = nvar; |
nd_nvar = nvar; |
|
|
nd_epw = (sizeof(UINT)*8)/nd_bpe; |
nd_epw = (sizeof(UINT)*8)/nd_bpe; |
elen = nd_nvar/nd_epw+(nd_nvar%nd_epw?1:0); |
elen = nd_nvar/nd_epw+(nd_nvar%nd_epw?1:0); |
|
|
Line 2809 ND_pairs nd_reconstruct(int mod,int trace,ND_pairs d) |
|
Line 2807 ND_pairs nd_reconstruct(int mod,int trace,ND_pairs d) |
|
else if ( obpe < 32 ) nd_bpe = 32; |
else if ( obpe < 32 ) nd_bpe = 32; |
else error("nd_reconstruct : exponent too large"); |
else error("nd_reconstruct : exponent too large"); |
|
|
nd_setup_parameters(0,0); |
nd_setup_parameters(nd_nvar,0); |
prev_nm_free_list = _nm_free_list; |
prev_nm_free_list = _nm_free_list; |
prev_ndp_free_list = _ndp_free_list; |
prev_ndp_free_list = _ndp_free_list; |
_nm_free_list = 0; |
_nm_free_list = 0; |