[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.227 and 1.230

version 1.227, 2016/07/11 08:00:30 version 1.230, 2016/12/02 02:12:00
Line 1 
Line 1 
 /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.226 2016/04/05 04:21:18 noro Exp $ */  /* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.229 2016/11/17 05:33:20 noro Exp $ */
   
 #include "nd.h"  #include "nd.h"
   
Line 93  ND ndgztond(ND p);
Line 93  ND ndgztond(ND p);
 void Pdp_set_weight(NODE,VECT *);  void Pdp_set_weight(NODE,VECT *);
 void Pox_cmo_rpc(NODE,Obj *);  void Pox_cmo_rpc(NODE,Obj *);
   
 extern int Denominator,DP_Multiple;  extern int Denominator,DP_Multiple,MaxDeg;
   
 #define BLEN (8*sizeof(unsigned long))  #define BLEN (8*sizeof(unsigned long))
   
Line 173  INLINE int nd_length(ND p)
Line 173  INLINE int nd_length(ND p)
     }      }
 }  }
   
   extern int dp_negative_weight;
   
 INLINE int ndl_reducible(UINT *d1,UINT *d2)  INLINE int ndl_reducible(UINT *d1,UINT *d2)
 {  {
     UINT u1,u2;      UINT u1,u2;
Line 180  INLINE int ndl_reducible(UINT *d1,UINT *d2)
Line 182  INLINE int ndl_reducible(UINT *d1,UINT *d2)
   
     if ( nd_module && (MPOS(d1) != MPOS(d2)) ) return 0;      if ( nd_module && (MPOS(d1) != MPOS(d2)) ) return 0;
   
     if ( TD(d1) < TD(d2) ) return 0;      if ( !dp_negative_weight && TD(d1) < TD(d2) ) return 0;
 #if USE_UNROLL  #if USE_UNROLL
     switch ( nd_bpe ) {      switch ( nd_bpe ) {
         case 3:          case 3:
Line 2005  NODE nd_gb(int m,int ishomo,int checkonly,int gensyz,i
Line 2007  NODE nd_gb(int m,int ishomo,int checkonly,int gensyz,i
     while ( d ) {      while ( d ) {
 again:  again:
         l = nd_minp(d,&d);          l = nd_minp(d,&d);
           if ( MaxDeg > 0 && SG(l) > MaxDeg ) break;
         if ( SG(l) != sugar ) {          if ( SG(l) != sugar ) {
             if ( ishomo ) {              if ( ishomo ) {
                 diag_count = 0;                  diag_count = 0;
Line 2263  NODE nd_gb_trace(int m,int ishomo,int **indp)
Line 2266  NODE nd_gb_trace(int m,int ishomo,int **indp)
     while ( d ) {      while ( d ) {
 again:  again:
         l = nd_minp(d,&d);          l = nd_minp(d,&d);
           if ( MaxDeg > 0 && SG(l) > MaxDeg ) break;
         if ( SG(l) != sugar ) {          if ( SG(l) != sugar ) {
 #if 1  #if 1
             if ( ishomo ) {              if ( ishomo ) {
Line 3050  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
Line 3054  void nd_gr(LIST f,LIST v,int m,int homo,int retdp,int 
     ndv_alloc = 0;      ndv_alloc = 0;
 #endif  #endif
     get_vars((Obj)f,&fv); pltovl(v,&vv); vlminus(fv,vv,&nd_vc);      get_vars((Obj)f,&fv); pltovl(v,&vv); vlminus(fv,vv,&nd_vc);
       if ( m && nd_vc )
          error("nd_{gr,f4} : computation over Fp(X) is unsupported. Use dp_gr_mod_main().");
     for ( nvar = 0, tv = vv; tv; tv = NEXT(tv), nvar++ );      for ( nvar = 0, tv = vv; tv; tv = NEXT(tv), nvar++ );
     switch ( ord->id ) {      switch ( ord->id ) {
         case 1:          case 1:
Line 3564  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
Line 3570  void nd_gr_trace(LIST f,LIST v,int trace,int homo,int 
         for ( t = fd0; t; t = NEXT(t) )          for ( t = fd0; t; t = NEXT(t) )
             ndv_homogenize((NDV)BDY(t),obpe,oadv,oepos,ompos);              ndv_homogenize((NDV)BDY(t),obpe,oadv,oepos,ompos);
     }      }
       if ( MaxDeg > 0 ) nocheck = 1;
     while ( 1 ) {      while ( 1 ) {
                 tl1 = tl2 = tl3 = tl4 = 0;                  tl1 = tl2 = tl3 = tl4 = 0;
         if ( Demand )          if ( Demand )
Line 6203  NODE nd_f4(int m,int **indp)
Line 6210  NODE nd_f4(int m,int **indp)
         get_eg(&eg0);          get_eg(&eg0);
         l = nd_minsugarp(d,&d);          l = nd_minsugarp(d,&d);
         sugar = SG(l);          sugar = SG(l);
           if ( MaxDeg > 0 && sugar > MaxDeg ) break;
         if ( nd_nzlist ) {          if ( nd_nzlist ) {
             for ( tn = nd_nzlist; tn; tn = NEXT(tn) ) {              for ( tn = nd_nzlist; tn; tn = NEXT(tn) ) {
                 node = BDY((LIST)BDY(tn));                  node = BDY((LIST)BDY(tn));
                             if ( QTOS((Q)ARG0(node)) == sugar ) break;                              if ( QTOS((Q)ARG0(node)) == sugar ) break;
             }              }
                         if ( tn ) {                          if ( tn ) {
                   nd_nzlist = NEXT(nd_nzlist);
                                 for ( t = l, ll0 = 0; t; t = NEXT(t) ) {                                  for ( t = l, ll0 = 0; t; t = NEXT(t) ) {
                         for ( tn = BDY((LIST)ARG1(node)); tn; tn = NEXT(tn) ) {                          for ( tn = BDY((LIST)ARG1(node)); tn; tn = NEXT(tn) ) {
                                         i1s = QTOS((Q)ARG0(BDY((LIST)BDY(tn))));                                          i1s = QTOS((Q)ARG0(BDY((LIST)BDY(tn))));
Line 6315  NODE nd_f4_trace(int m,int **indp)
Line 6324  NODE nd_f4_trace(int m,int **indp)
         get_eg(&eg0);          get_eg(&eg0);
         l = nd_minsugarp(d,&d);          l = nd_minsugarp(d,&d);
         sugar = SG(l);          sugar = SG(l);
           if ( MaxDeg > 0 && sugar > MaxDeg ) break;
         bucket = create_pbucket();          bucket = create_pbucket();
         stat = nd_sp_f4(m,0,l,bucket);          stat = nd_sp_f4(m,0,l,bucket);
         if ( !stat ) {          if ( !stat ) {

Legend:
Removed from v.1.227  
changed lines
  Added in v.1.230

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