version 1.173, 2009/02/15 09:22:07 |
version 1.175, 2009/09/09 08:13:24 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.172 2009/02/15 03:07:41 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/nd.c,v 1.174 2009/06/01 07:31:54 noro Exp $ */ |
|
|
#include "nd.h" |
#include "nd.h" |
|
|
Line 46 static int nd_worb_len; |
|
Line 46 static int nd_worb_len; |
|
static int nd_found,nd_create,nd_notfirst; |
static int nd_found,nd_create,nd_notfirst; |
static int nmv_adv; |
static int nmv_adv; |
static int nd_demand; |
static int nd_demand; |
static int nd_module,nd_ispot,nd_mpos; |
static int nd_module,nd_ispot,nd_mpos,nd_pot_nelim; |
static NODE nd_tracelist; |
static NODE nd_tracelist; |
static NODE nd_alltracelist; |
static NODE nd_alltracelist; |
static int nd_gentrace,nd_gensyz,nd_nora; |
static int nd_gentrace,nd_gensyz,nd_nora; |
Line 581 int ndl_module_grlex_compare(UINT *d1,UINT *d2) |
|
Line 581 int ndl_module_grlex_compare(UINT *d1,UINT *d2) |
|
int i,c; |
int i,c; |
|
|
if ( nd_ispot ) { |
if ( nd_ispot ) { |
|
if ( nd_pot_nelim && MPOS(d1)>=nd_pot_nelim+1 && MPOS(d2) >= nd_pot_nelim+1 ) { |
|
if ( TD(d1) > TD(d2) ) return 1; |
|
else if ( TD(d1) < TD(d2) ) return -1; |
|
if ( c = ndl_lex_compare(d1,d2) ) return c; |
|
if ( MPOS(d1) < MPOS(d2) ) return 1; |
|
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
|
return 0; |
|
} |
if ( MPOS(d1) < MPOS(d2) ) return 1; |
if ( MPOS(d1) < MPOS(d2) ) return 1; |
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
else if ( MPOS(d1) > MPOS(d2) ) return -1; |
} |
} |
Line 2796 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
Line 2804 void nd_gr(LIST f,LIST v,int m,int f4,struct order_spe |
|
EPOS oepos; |
EPOS oepos; |
int obpe,oadv,ompos; |
int obpe,oadv,ompos; |
|
|
nd_module; |
nd_module = 0; |
if ( !m && Demand ) nd_demand = 1; |
if ( !m && Demand ) nd_demand = 1; |
else nd_demand = 0; |
else nd_demand = 0; |
parse_nd_option(current_option); |
parse_nd_option(current_option); |
Line 2989 void nd_gr_postproc(LIST f,LIST v,int m,struct order_s |
|
Line 2997 void nd_gr_postproc(LIST f,LIST v,int m,struct order_s |
|
return; |
return; |
} |
} |
} else { |
} else { |
|
#if 0 |
|
/* bug ? */ |
for ( t = x; t; t = NEXT(t) ) |
for ( t = x; t; t = NEXT(t) ) |
BDY(t) = (pointer)nd_ps[(long)BDY(t)]; |
BDY(t) = (pointer)nd_ps[(long)BDY(t)]; |
|
#else |
|
conv_ilist(0,0,x,&perm); |
|
#endif |
} |
} |
x = ndv_reducebase(x,perm); |
x = ndv_reducebase(x,perm); |
x = ndv_reduceall(m,x); |
x = ndv_reduceall(m,x); |
Line 4740 void nd_init_ord(struct order_spec *ord) |
|
Line 4753 void nd_init_ord(struct order_spec *ord) |
|
/* module order */ |
/* module order */ |
case 256: |
case 256: |
nd_ispot = ord->ispot; |
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
nd_dcomp = -1; |
nd_dcomp = -1; |
switch ( ord->ord.simple ) { |
switch ( ord->ord.simple ) { |
case 0: |
case 0: |
Line 4760 void nd_init_ord(struct order_spec *ord) |
|
Line 4774 void nd_init_ord(struct order_spec *ord) |
|
break; |
break; |
case 257: |
case 257: |
/* block order */ |
/* block order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
ndl_compare_function = ndl_module_block_compare; |
ndl_compare_function = ndl_module_block_compare; |
break; |
break; |
case 258: |
case 258: |
/* matrix order */ |
/* matrix order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
nd_matrix_len = ord->ord.matrix.row; |
nd_matrix_len = ord->ord.matrix.row; |
nd_matrix = ord->ord.matrix.matrix; |
nd_matrix = ord->ord.matrix.matrix; |
ndl_compare_function = ndl_module_matrix_compare; |
ndl_compare_function = ndl_module_matrix_compare; |
break; |
break; |
case 259: |
case 259: |
/* composite order */ |
/* composite order */ |
|
nd_ispot = ord->ispot; |
|
nd_pot_nelim = ord->pot_nelim; |
|
nd_dcomp = -1; |
|
nd_isrlex = 0; |
nd_worb_len = ord->ord.composite.length; |
nd_worb_len = ord->ord.composite.length; |
nd_worb = ord->ord.composite.w_or_b; |
nd_worb = ord->ord.composite.w_or_b; |
ndl_compare_function = ndl_module_composite_compare; |
ndl_compare_function = ndl_module_composite_compare; |