version 1.33, 2004/04/15 08:44:15 |
version 1.34, 2004/04/22 07:52:38 |
|
|
* 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; |
} |
} |