| version 1.35, 2004/05/14 06:02:54 | 
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.34 2004/04/22 07:52:38 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; | 
| Line 1565  int create_composite_order_spec(VL vl,LIST order,struc | 
 
  | 
| Line 1582  int create_composite_order_spec(VL vl,LIST order,struc | 
 
 
 | 
|                  w_or_b[n].body.block.order = 0; | 
                 w_or_b[n].body.block.order = 0; | 
|                  spec->ord.composite.length = n+1; | 
                 spec->ord.composite.length = n+1; | 
|          } | 
         } | 
|          if ( 1 ) print_composite_order_spec(spec); | 
  | 
|  } | 
 } | 
|   | 
  | 
|  /* module order spec */ | 
 /* module order spec */ |