[BACK]Return to dp-supp.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/dp-supp.c between version 1.33 and 1.34

version 1.33, 2004/04/15 08:44:15 version 1.34, 2004/04/22 07:52:38
Line 45 
Line 45 
  * 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.32 2004/04/15 08:14:13 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp-supp.c,v 1.33 2004/04/15 08:44:15 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
Line 1994  LIST extract_initial_term(LIST f,int *weight,int n);
Line 1994  LIST extract_initial_term(LIST f,int *weight,int n);
   
 DP extract_initial_term_from_dp(DP p,int *weight,int n)  DP extract_initial_term_from_dp(DP p,int *weight,int n)
 {  {
         int w,t,i;          int w,t,i,top;
         MP m,r0,r;          MP m,r0,r;
         DP dp;          DP dp;
   
         if ( !p ) return 0;          if ( !p ) return 0;
         w = -1;          top = 1;
         for ( m = BDY(p); m; m = NEXT(m) ) {          for ( m = BDY(p); m; m = NEXT(m) ) {
                 for ( i = 0, t = 0; i < n; i++ )                  for ( i = 0, t = 0; i < n; i++ )
                         t += weight[i]*m->dl->d[i];                          t += weight[i]*m->dl->d[i];
                 if ( t > w ) {                  if ( top || t > w ) {
                         r0 = 0;                          r0 = 0;
                         w = t;                          w = t;
                           top = 0;
                 }                  }
                 if ( t == w ) {                  if ( t == w ) {
                         NEXTMP(r0,r);                          NEXTMP(r0,r);
Line 2077  LIST highest_order(LIST f,int *weight,int n);
Line 2078  LIST highest_order(LIST f,int *weight,int n);
   
 int highest_order_dp(DP p,int *weight,int n)  int highest_order_dp(DP p,int *weight,int n)
 {  {
         int w,t,i;          int w,t,i,top;
         MP m;          MP m;
   
         if ( !p ) return -1;          if ( !p ) return -1;
         w = -1;          top = 1;
         for ( m = BDY(p); m; m = NEXT(m) ) {          for ( m = BDY(p); m; m = NEXT(m) ) {
                 for ( i = 0, t = 0; i < n; i++ )                  for ( i = 0, t = 0; i < n; i++ )
                         t += weight[i]*m->dl->d[i];                          t += weight[i]*m->dl->d[i];
                 if ( t > w )                  if ( top || t > w ) {
                         w = t;                          w = t;
                           top = 0;
                   }
         }          }
         return w;          return w;
 }  }

Legend:
Removed from v.1.33  
changed lines
  Added in v.1.34

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