[BACK]Return to nd.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/nd.c between version 1.77 and 1.79

version 1.77, 2003/10/08 09:09:04 version 1.79, 2003/10/10 07:18:12
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.76 2003/09/28 09:18:57 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.78 2003/10/10 01:51:09 noro Exp $ */
   
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 2318  void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe
Line 2318  void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe
         NDV b;          NDV b;
         int ishomo;          int ishomo;
   
           if ( !m && Demand ) nd_demand = 1;
           else nd_demand = 0;
   
         ndv_alloc = 0;          ndv_alloc = 0;
         get_vars((Obj)f,&fv); pltovl(v,&vv);          get_vars((Obj)f,&fv); pltovl(v,&vv);
         for ( nvar = 0, tv = vv; tv; tv = NEXT(tv), nvar++ );          for ( nvar = 0, tv = vv; tv; tv = NEXT(tv), nvar++ );
Line 2367  void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru
Line 2370  void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru
         nocheck = 0;          nocheck = 0;
         mindex = 0;          mindex = 0;
   
         if ( Demand )          if ( Demand ) nd_demand = 1;
                 nd_demand = 1;          else nd_demand = 0;
   
         /* setup modulus */          /* setup modulus */
         if ( trace < 0 ) {          if ( trace < 0 ) {
                 trace = -trace;                  trace = -trace;
Line 2424  void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru
Line 2428  void nd_gr_trace(LIST f,LIST v,int trace,int homo,stru
                 nd_demand = 0;                  nd_demand = 0;
                 cand = ndv_reducebase(cand);                  cand = ndv_reducebase(cand);
                 cand = ndv_reduceall(0,cand);                  cand = ndv_reduceall(0,cand);
                   cbpe = nd_bpe;
                 if ( nocheck )                  if ( nocheck )
                         break;                          break;
                 cbpe = nd_bpe;  
                 if ( ndv_check_candidate(in0,obpe,oadv,oepos,cand) )                  if ( ndv_check_candidate(in0,obpe,oadv,oepos,cand) )
                         /* success */                          /* success */
                         break;                          break;
Line 2828  int nd_get_exporigin(struct order_spec *ord)
Line 2832  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,wpd;
         struct order_pair *op;          struct order_pair *op;
         int bpe;  
   
         if ( !max ) bpe = nd_bpe;  
         else if ( max < 2 ) bpe = 1;  
         else if ( max < 4 ) bpe = 2;  
         else if ( max < 8 ) bpe = 3;  
         else if ( max < 16 ) bpe = 4;  
         else if ( max < 32 ) bpe = 5;  
         else if ( max < 64 ) bpe = 6;  
         else if ( max < 256 ) bpe = 8;  
         else if ( max < 1024 ) bpe = 10;  
         else if ( max < 65536 ) bpe = 16;  
         else bpe = 32;  
         if ( bpe != nd_bpe || nvar != nd_nvar )  
                 nd_free_private_storage();  
         nd_bpe = bpe;  
         nd_nvar = nvar;          nd_nvar = nvar;
           if ( max ) {
                   if ( max < 2 ) nd_bpe = 1;
                   else if ( max < 4 ) nd_bpe = 2;
                   else if ( max < 8 ) nd_bpe = 3;
                   else if ( max < 16 ) nd_bpe = 4;
                   else if ( max < 32 ) nd_bpe = 5;
                   else if ( max < 64 ) nd_bpe = 6;
                   else if ( max < 256 ) nd_bpe = 8;
                   else if ( max < 1024 ) nd_bpe = 10;
                   else if ( max < 65536 ) nd_bpe = 16;
                   else nd_bpe = 32;
           }
         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);
   
         nd_exporigin = nd_get_exporigin(nd_ord);          nd_exporigin = nd_get_exporigin(nd_ord);
         nd_wpd = nd_exporigin+elen;          wpd = nd_exporigin+elen;
           if ( wpd != nd_wpd ) {
                   nd_free_private_storage();
                   nd_wpd = wpd;
           }
         if ( nd_bpe < 32 ) {          if ( nd_bpe < 32 ) {
                 nd_mask0 = (1<<nd_bpe)-1;                  nd_mask0 = (1<<nd_bpe)-1;
         } else {          } else {

Legend:
Removed from v.1.77  
changed lines
  Added in v.1.79

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>