version 1.36, 2004/05/14 09:20:56 |
version 1.37, 2004/09/15 06:06:42 |
|
|
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. |
* |
* |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.35 2004/05/14 06:02:54 noro Exp $ |
* $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.36 2004/05/14 09:20:56 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include "base.h" |
#include "base.h" |
Line 62 extern int NoGCD; |
|
Line 62 extern int NoGCD; |
|
extern int GenTrace; |
extern int GenTrace; |
extern NODE TraceList; |
extern NODE TraceList; |
|
|
|
int show_orderspec; |
|
|
|
void print_composite_order_spec(struct order_spec *spec); |
|
|
/* |
/* |
* content reduction |
* content reduction |
* |
* |
Line 1317 void dp_nf_tab_f(DP p,LIST *tab,DP *rp) |
|
Line 1321 void dp_nf_tab_f(DP p,LIST *tab,DP *rp) |
|
|
|
int create_order_spec(VL vl,Obj obj,struct order_spec **specp) |
int create_order_spec(VL vl,Obj obj,struct order_spec **specp) |
{ |
{ |
int i,j,n,s,row,col; |
int i,j,n,s,row,col,ret; |
struct order_spec *spec; |
struct order_spec *spec; |
struct order_pair *l; |
struct order_pair *l; |
NODE node,t,tn; |
NODE node,t,tn; |
Line 1325 int create_order_spec(VL vl,Obj obj,struct order_spec |
|
Line 1329 int create_order_spec(VL vl,Obj obj,struct order_spec |
|
pointer **b; |
pointer **b; |
int **w; |
int **w; |
|
|
if ( vl && obj && OID(obj) == O_LIST ) |
if ( vl && obj && OID(obj) == O_LIST ) { |
return create_composite_order_spec(vl,(LIST)obj,specp); |
ret = create_composite_order_spec(vl,(LIST)obj,specp); |
|
if ( show_orderspec ) |
|
print_composite_order_spec(*specp); |
|
return ret; |
|
} |
|
|
*specp = spec = (struct order_spec *)MALLOC(sizeof(struct order_spec)); |
*specp = spec = (struct order_spec *)MALLOC(sizeof(struct order_spec)); |
if ( !obj || NUM(obj) ) { |
if ( !obj || NUM(obj) ) { |
Line 1406 void print_composite_order_spec(struct order_spec *spe |
|
Line 1414 void print_composite_order_spec(struct order_spec *spe |
|
} |
} |
} |
} |
|
|
|
int comp_sw(struct sparse_weight *a, struct sparse_weight *b) |
|
{ |
|
if ( a->pos > b->pos ) return 1; |
|
else if ( a->pos < b->pos ) return -1; |
|
else return 0; |
|
} |
|
|
/* order = [w_or_b, w_or_b, ... ] */ |
/* order = [w_or_b, w_or_b, ... ] */ |
/* w_or_b = w or b */ |
/* w_or_b = w or b */ |
/* w = [1,2,...] or [x,1,y,2,...] */ |
/* w = [1,2,...] or [x,1,y,2,...] */ |
Line 1483 int create_composite_order_spec(VL vl,LIST order,struc |
|
Line 1498 int create_composite_order_spec(VL vl,LIST order,struc |
|
error("a sparse weight vector must be specified as [var1,weight1,...]"); |
error("a sparse weight vector must be specified as [var1,weight1,...]"); |
sw[j].value = QTOS((Q)BDY(p)); p = NEXT(p); |
sw[j].value = QTOS((Q)BDY(p)); p = NEXT(p); |
} |
} |
|
qsort(sw,len,sizeof(struct sparse_weight), |
|
(int (*)(const void *,const void *))comp_sw); |
w_or_b[i].type = IS_SPARSE_WEIGHT; |
w_or_b[i].type = IS_SPARSE_WEIGHT; |
w_or_b[i].length = len; |
w_or_b[i].length = len; |
w_or_b[i].body.sparse_weight = sw; |
w_or_b[i].body.sparse_weight = sw; |