=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/dp.c,v retrieving revision 1.16 retrieving revision 1.22 diff -u -p -r1.16 -r1.22 --- OpenXM_contrib2/asir2000/builtin/dp.c 2001/09/04 08:48:18 1.16 +++ OpenXM_contrib2/asir2000/builtin/dp.c 2001/11/19 00:57:10 1.22 @@ -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.15 2001/01/11 08:43:21 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.21 2001/10/09 01:36:05 noro Exp $ */ #include "ca.h" #include "base.h" @@ -76,6 +76,7 @@ void Pdp_gr_print(); void Pdp_mbase(),Pdp_lnf_mod(),Pdp_nf_tab_mod(),Pdp_mdtod(); void Pdp_vtoe(), Pdp_etov(), Pdp_dtov(), Pdp_idiv(), Pdp_sep(); void Pdp_cont(); +void Pdp_gr_checklist(); void Pdp_weyl_red(); void Pdp_weyl_sp(); @@ -118,11 +119,11 @@ struct ftab dp_tab[] = { {"dp_gr_main",Pdp_gr_main,5}, {"dp_gr_mod_main",Pdp_gr_mod_main,5}, {"dp_gr_f_main",Pdp_gr_f_main,4}, + {"dp_gr_checklist",Pdp_gr_checklist,1}, /* F4 algorithm */ {"dp_f4_main",Pdp_f4_main,3}, {"dp_f4_mod_main",Pdp_f4_mod_main,4}, - {"dp_f4_f_main",Pdp_f4_f_main,3}, /* weyl algebra */ /* multiplication */ @@ -148,7 +149,6 @@ struct ftab dp_tab[] = { /* F4 algorithm */ {"dp_weyl_f4_main",Pdp_weyl_f4_main,3}, {"dp_weyl_f4_mod_main",Pdp_weyl_f4_mod_main,4}, - {"dp_weyl_f4_f_main",Pdp_weyl_f4_f_main,3}, /* misc */ {"dp_weyl_set_weight",Pdp_weyl_set_weight,-1}, @@ -1286,22 +1286,24 @@ LIST *rp; asir_assert(ARG1(arg),O_LIST,"dp_f4_main"); f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); create_order_spec(ARG2(arg),&ord); - dp_f4_main(f,v,0,&ord,rp); + dp_f4_main(f,v,&ord,rp); } -void Pdp_f4_f_main(arg,rp) +/* dp_gr_checklist(list of dp) */ + +void Pdp_gr_checklist(arg,rp) NODE arg; LIST *rp; { - LIST f,v; - struct order_spec ord; + VECT g; + LIST dp; + NODE r; do_weyl = 0; - asir_assert(ARG0(arg),O_LIST,"dp_f4_f_main"); - asir_assert(ARG1(arg),O_LIST,"dp_f4_f_main"); - f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); - create_order_spec(ARG2(arg),&ord); - dp_f4_main(f,v,1,&ord,rp); + asir_assert(ARG0(arg),O_LIST,"dp_gr_checklist"); + gbcheck_list(BDY((LIST)ARG0(arg)),&g,&dp); + r = mknode(2,g,dp); + MKLIST(*rp,r); } void Pdp_f4_mod_main(arg,rp) @@ -1313,10 +1315,12 @@ LIST *rp; struct order_spec ord; do_weyl = 0; - asir_assert(ARG0(arg),O_LIST,"dp_f4_main"); - asir_assert(ARG1(arg),O_LIST,"dp_f4_main"); - asir_assert(ARG2(arg),O_N,"dp_f4_main"); + asir_assert(ARG0(arg),O_LIST,"dp_f4_mod_main"); + asir_assert(ARG1(arg),O_LIST,"dp_f4_mod_main"); + asir_assert(ARG2(arg),O_N,"dp_f4_mod_main"); f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); m = QTOS((Q)ARG2(arg)); + if ( !m ) + error("dp_f4_mod_main : invalid argument"); create_order_spec(ARG3(arg),&ord); dp_f4_mod_main(f,v,m,&ord,rp); } @@ -1337,6 +1341,8 @@ LIST *rp; asir_assert(ARG3(arg),O_N,"dp_gr_mod_main"); f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); homo = (Num)ARG2(arg); m = QTOS((Q)ARG3(arg)); + if ( !m ) + error("dp_gr_mod_main : invalid argument"); create_order_spec(ARG4(arg),&ord); dp_gr_mod_main(f,v,homo,m,&ord,rp); } @@ -1378,8 +1384,6 @@ LIST *rp; { LIST f,v; Num homo; - Q m; - int modular; struct order_spec ord; asir_assert(ARG0(arg),O_LIST,"dp_weyl_gr_main"); @@ -1406,26 +1410,10 @@ LIST *rp; f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); create_order_spec(ARG2(arg),&ord); do_weyl = 1; - dp_f4_main(f,v,0,&ord,rp); + dp_f4_main(f,v,&ord,rp); do_weyl = 0; } -void Pdp_weyl_f4_f_main(arg,rp) -NODE arg; -LIST *rp; -{ - LIST f,v; - struct order_spec ord; - - asir_assert(ARG0(arg),O_LIST,"dp_weyl_f4_main"); - asir_assert(ARG1(arg),O_LIST,"dp_weyl_f4_main"); - f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); - create_order_spec(ARG2(arg),&ord); - do_weyl = 1; - dp_f4_main(f,v,1,&ord,rp); - do_weyl = 0; -} - void Pdp_weyl_f4_mod_main(arg,rp) NODE arg; LIST *rp; @@ -1438,6 +1426,8 @@ LIST *rp; asir_assert(ARG1(arg),O_LIST,"dp_weyl_f4_main"); asir_assert(ARG2(arg),O_N,"dp_f4_main"); f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); m = QTOS((Q)ARG2(arg)); + if ( !m ) + error("dp_weyl_f4_mod_main : invalid argument"); create_order_spec(ARG3(arg),&ord); do_weyl = 1; dp_f4_mod_main(f,v,m,&ord,rp); @@ -1459,6 +1449,8 @@ LIST *rp; asir_assert(ARG3(arg),O_N,"dp_weyl_gr_mod_main"); f = (LIST)ARG0(arg); v = (LIST)ARG1(arg); homo = (Num)ARG2(arg); m = QTOS((Q)ARG3(arg)); + if ( !m ) + error("dp_weyl_gr_mod_main : invalid argument"); create_order_spec(ARG4(arg),&ord); do_weyl = 1; dp_gr_mod_main(f,v,homo,m,&ord,rp);