=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/dp.c,v retrieving revision 1.55 retrieving revision 1.59 diff -u -p -r1.55 -r1.59 --- OpenXM_contrib2/asir2000/builtin/dp.c 2004/12/04 09:39:27 1.55 +++ OpenXM_contrib2/asir2000/builtin/dp.c 2005/08/24 06:28:39 1.59 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.54 2004/05/31 00:38:44 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.58 2005/08/03 05:01:00 noro Exp $ */ #include "ca.h" #include "base.h" @@ -93,11 +93,11 @@ void Pdp_set_weight(); void Pdp_nf_f(),Pdp_weyl_nf_f(); void Pdp_lnf_f(); void Pnd_gr(),Pnd_gr_trace(),Pnd_f4(); +void Pnd_gr_postproc(); void Pnd_weyl_gr(),Pnd_weyl_gr_trace(); void Pnd_nf(); void Pdp_initial_term(); void Pdp_order(); -void Pnd_set_nalg(); LIST dp_initial_term(); LIST dp_order(); @@ -146,10 +146,10 @@ struct ftab dp_tab[] = { {"nd_f4",Pnd_f4,4}, {"nd_gr",Pnd_gr,4}, {"nd_gr_trace",Pnd_gr_trace,5}, + {"nd_gr_postproc",Pnd_gr_postproc,5}, {"nd_weyl_gr",Pnd_weyl_gr,4}, {"nd_weyl_gr_trace",Pnd_weyl_gr_trace,5}, {"nd_nf",Pnd_nf,5}, - {"nd_set_nalg",Pnd_set_nalg,1}, /* F4 algorithm */ {"dp_f4_main",Pdp_f4_main,3}, @@ -441,7 +441,7 @@ Obj *rp; int modular; f.id = O_LIST; f.body = 0; - if ( !arg ) + if ( !arg && !current_option ) *rp = dp_current_spec->obj; else { if ( current_option ) @@ -1800,6 +1800,29 @@ LIST *rp; nd_gr(f,v,m,0,ord,rp); } +void Pnd_gr_postproc(arg,rp) +NODE arg; +LIST *rp; +{ + LIST f,v; + int m,do_check; + struct order_spec *ord; + + do_weyl = 0; + asir_assert(ARG0(arg),O_LIST,"nd_gr"); + asir_assert(ARG1(arg),O_LIST,"nd_gr"); + asir_assert(ARG2(arg),O_N,"nd_gr"); + f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); + f = remove_zero_from_list(f); + if ( !BDY(f) ) { + *rp = f; return; + } + m = QTOS((Q)ARG2(arg)); + create_order_spec(0,ARG3(arg),&ord); + do_check = ARG4(arg) ? 1 : 0; + nd_gr_postproc(f,v,m,ord,do_check,rp); +} + void Pnd_gr_trace(arg,rp) NODE arg; LIST *rp; @@ -1870,12 +1893,6 @@ LIST *rp; nd_gr_trace(f,v,m,homo,ord,rp); } -void Pnd_set_nalg(NODE arg,Q *rp) -{ - nd_set_nalg(QTOS((Q)ARG0(arg))); - *rp = (Q)ARG0(arg); -} - void Pnd_nf(arg,rp) NODE arg; P *rp; @@ -2038,7 +2055,7 @@ LIST *rp; do_weyl = 0; } -static VECT current_dl_weight_vector_obj; +VECT current_dl_weight_vector_obj; int *current_dl_weight_vector; void Pdp_set_weight(arg,rp)