=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/dp.c,v retrieving revision 1.17 retrieving revision 1.23 diff -u -p -r1.17 -r1.23 --- OpenXM_contrib2/asir2000/builtin/dp.c 2001/09/05 01:57:32 1.17 +++ OpenXM_contrib2/asir2000/builtin/dp.c 2001/11/19 01:40:04 1.23 @@ -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.16 2001/09/04 08:48:18 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.22 2001/11/19 00:57:10 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,6 +119,7 @@ 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,2}, /* F4 algorithm */ {"dp_f4_main",Pdp_f4_main,3}, @@ -1287,6 +1289,26 @@ LIST *rp; dp_f4_main(f,v,&ord,rp); } +/* dp_gr_checklist(list of dp) */ + +void Pdp_gr_checklist(arg,rp) +NODE arg; +LIST *rp; +{ + VECT g; + LIST dp; + NODE r; + int n; + + do_weyl = 0; + asir_assert(ARG0(arg),O_LIST,"dp_gr_checklist"); + asir_assert(ARG1(arg),O_N,"dp_gr_checklist"); + n = QTOS((Q)ARG1(arg)); + gbcheck_list(BDY((LIST)ARG0(arg)),n,&g,&dp); + r = mknode(2,g,dp); + MKLIST(*rp,r); +} + void Pdp_f4_mod_main(arg,rp) NODE arg; LIST *rp; @@ -1300,6 +1322,8 @@ LIST *rp; 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); } @@ -1320,6 +1344,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); } @@ -1361,8 +1387,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"); @@ -1405,6 +1429,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); @@ -1426,6 +1452,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);