[BACK]Return to dp.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/dp.c between version 1.12 and 1.13

version 1.12, 2000/12/11 02:00:40 version 1.13, 2000/12/13 05:37:30
Line 45 
Line 45 
  * 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.c,v 1.11 2000/12/08 08:26:08 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/dp.c,v 1.12 2000/12/11 02:00:40 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
Line 77  void Pdp_mbase(),Pdp_lnf_mod(),Pdp_nf_tab_mod(),Pdp_md
Line 77  void Pdp_mbase(),Pdp_lnf_mod(),Pdp_nf_tab_mod(),Pdp_md
 void Pdp_vtoe(), Pdp_etov(), Pdp_dtov(), Pdp_idiv(), Pdp_sep();  void Pdp_vtoe(), Pdp_etov(), Pdp_dtov(), Pdp_idiv(), Pdp_sep();
 void Pdp_cont();  void Pdp_cont();
   
 void Pdp_weyl_red(),Pdp_weyl_sp(),Pdp_weyl_nf();  void Pdp_weyl_red();
   void Pdp_weyl_sp();
   void Pdp_weyl_nf(),Pdp_weyl_nf_mod();
 void Pdp_weyl_gr_main(),Pdp_weyl_gr_mod_main();  void Pdp_weyl_gr_main(),Pdp_weyl_gr_mod_main();
 void Pdp_weyl_f4_main(),Pdp_weyl_f4_mod_main();  void Pdp_weyl_f4_main(),Pdp_weyl_f4_mod_main();
 void Pdp_weyl_mul();  void Pdp_weyl_mul(),Pdp_weyl_mul_mod();
   
 struct ftab dp_tab[] = {  struct ftab dp_tab[] = {
         /* content reduction */          /* content reduction */
Line 118  struct ftab dp_tab[] = {
Line 120  struct ftab dp_tab[] = {
 /* weyl algebra */  /* weyl algebra */
         /* multiplication */          /* multiplication */
         {"dp_weyl_mul",Pdp_weyl_mul,2},          {"dp_weyl_mul",Pdp_weyl_mul,2},
           {"dp_weyl_mul_mod",Pdp_weyl_mul_mod,3},
   
         /* s-poly */          /* s-poly */
         {"dp_weyl_sp",Pdp_weyl_sp,2},          {"dp_weyl_sp",Pdp_weyl_sp,2},
Line 127  struct ftab dp_tab[] = {
Line 130  struct ftab dp_tab[] = {
   
         /* normal form */          /* normal form */
         {"dp_weyl_nf",Pdp_weyl_nf,4},          {"dp_weyl_nf",Pdp_weyl_nf,4},
           {"dp_weyl_nf_mod",Pdp_weyl_nf_mod,5},
   
         /* Buchberger algorithm */          /* Buchberger algorithm */
         {"dp_weyl_gr_main",Pdp_weyl_gr_main,5},          {"dp_weyl_gr_main",Pdp_weyl_gr_main,5},
Line 509  DP *rp;
Line 513  DP *rp;
         do_weyl = 0;          do_weyl = 0;
 }  }
   
   void Pdp_nf_mod(arg,rp)
   NODE arg;
   DP *rp;
   {
           NODE b;
           DP g;
           DP *ps;
           int mod,full,ac;
           NODE n,n0;
   
           ac = argc(arg);
           asir_assert(ARG0(arg),O_LIST,"dp_weyl_nf_mod");
           asir_assert(ARG1(arg),O_DP,"dp_weyl_nf_mod");
           asir_assert(ARG2(arg),O_VECT,"dp_weyl_nf_mod");
           asir_assert(ARG3(arg),O_N,"dp_weyl_nf_mod");
           asir_assert(ARG4(arg),O_N,"dp_weyl_nf_mod");
           if ( !(g = (DP)ARG1(arg)) ) {
                   *rp = 0; return;
           }
           b = BDY((LIST)ARG0(arg)); ps = (DP *)BDY((VECT)ARG2(arg));
           full = QTOS((Q)ARG3(arg)); mod = QTOS((Q)ARG4(arg));
           for ( n0 = n = 0; b; b = NEXT(b) ) {
                   NEXTNODE(n0,n);
                   BDY(n) = (pointer)QTOS((Q)BDY(b));
           }
           if ( n0 )
                   NEXT(n) = 0;
           do_weyl = 1;
           dp_nf_mod(n0,g,ps,mod,full,rp);
           do_weyl = 0;
   }
   
 void Pdp_true_nf(arg,rp)  void Pdp_true_nf(arg,rp)
 NODE arg;  NODE arg;
 LIST *rp;  LIST *rp;
Line 537  LIST *rp;
Line 573  LIST *rp;
         NEXT(NEXT(n)) = 0; MKLIST(*rp,n);          NEXT(NEXT(n)) = 0; MKLIST(*rp,n);
 }  }
   
 void Pdp_nf_mod(arg,rp)  void Pdp_weyl_nf_mod(arg,rp)
 NODE arg;  NODE arg;
 DP *rp;  DP *rp;
 {  {
Line 547  DP *rp;
Line 583  DP *rp;
         int mod,full,ac;          int mod,full,ac;
         NODE n,n0;          NODE n,n0;
   
         do_weyl = 0;  
         ac = argc(arg);          ac = argc(arg);
         asir_assert(ARG0(arg),O_LIST,"dp_nf_mod");          asir_assert(ARG0(arg),O_LIST,"dp_nf_mod");
         asir_assert(ARG1(arg),O_DP,"dp_nf_mod");          asir_assert(ARG1(arg),O_DP,"dp_nf_mod");
Line 565  DP *rp;
Line 600  DP *rp;
         }          }
         if ( n0 )          if ( n0 )
                 NEXT(n) = 0;                  NEXT(n) = 0;
         dp_nf_mod(n,g,ps,mod,full,rp);          do_weyl = 1;
           dp_nf_mod(n0,g,ps,mod,full,rp);
           do_weyl = 0;
 }  }
   
 void Pdp_true_nf_mod(arg,rp)  void Pdp_true_nf_mod(arg,rp)
Line 685  LIST *rp;
Line 722  LIST *rp;
         NEWNODE(NEXT(n)); BDY(NEXT(n)) = (pointer)r;          NEWNODE(NEXT(n)); BDY(NEXT(n)) = (pointer)r;
         NEXT(NEXT(n)) = 0; MKLIST(*rp,n);          NEXT(NEXT(n)) = 0; MKLIST(*rp,n);
 }  }
   
 void Pdp_subd(arg,rp)  void Pdp_subd(arg,rp)
 NODE arg;  NODE arg;
 DP *rp;  DP *rp;
Line 707  DP *rp;
Line 745  DP *rp;
         asir_assert(p1,O_DP,"dp_weyl_mul"); asir_assert(p2,O_DP,"dp_mul");          asir_assert(p1,O_DP,"dp_weyl_mul"); asir_assert(p2,O_DP,"dp_mul");
         do_weyl = 1;          do_weyl = 1;
         muld(CO,p1,p2,rp);          muld(CO,p1,p2,rp);
           do_weyl = 0;
   }
   
   void Pdp_weyl_mul_mod(arg,rp)
   NODE arg;
   DP *rp;
   {
           DP p1,p2;
           Q m;
   
           p1 = (DP)ARG0(arg); p2 = (DP)ARG1(arg); m = (Q)ARG2(arg);
           asir_assert(p1,O_DP,"dp_weyl_mul_mod");
           asir_assert(p2,O_DP,"dp_mul_mod");
           asir_assert(m,O_N,"dp_mul_mod");
           do_weyl = 1;
           mulmd(CO,QTOS(m),p1,p2,rp);
         do_weyl = 0;          do_weyl = 0;
 }  }
   

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>