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

Diff for /OpenXM_contrib2/asir2000/builtin/poly.c between version 1.17 and 1.20

version 1.17, 2002/09/27 04:42:59 version 1.20, 2003/06/21 02:09:16
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/poly.c,v 1.16 2001/10/09 01:36:06 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/poly.c,v 1.19 2003/06/19 07:08:18 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 53 
Line 53 
   
 void Pranp();  void Pranp();
   
   void Pheadsgn();
   void Pmul_trunc();
 void Pumul(),Pumul_ff(),Pusquare(),Pusquare_ff(),Putmul(),Putmul_ff();  void Pumul(),Pumul_ff(),Pusquare(),Pusquare_ff(),Putmul(),Putmul_ff();
 void Pkmul(),Pksquare(),Pktmul();  void Pkmul(),Pksquare(),Pktmul();
 void Pord(), Pcoef0(), Pcoef(), Pdeg(), Pmindeg(), Psetmod();  void Pord(), Pcoef0(), Pcoef(), Pdeg(), Pmindeg(), Psetmod();
Line 64  void Pmergelist(), Pch_mv(), Pre_mv(), Pdeglist();
Line 66  void Pmergelist(), Pch_mv(), Pre_mv(), Pdeglist();
 void Pptomp(),Pmptop();  void Pptomp(),Pmptop();
 void Pptolmp(),Plmptop();  void Pptolmp(),Plmptop();
 void Pptosfp(),Psfptop(),Psf_galois_action(),Psf_embed(),Psf_find_root();  void Pptosfp(),Psfptop(),Psf_galois_action(),Psf_embed(),Psf_find_root();
 void Psf_minipoly(),Psf_log();  void Psf_minipoly(),Psf_log(),Psfptopsfp();
 void Pptogf2n(),Pgf2ntop(),Pgf2ntovect();  void Pptogf2n(),Pgf2ntop(),Pgf2ntovect();
 void Pptogfpn(),Pgfpntop();  void Pptogfpn(),Pgfpntop();
 void Pfind_root_gf2n();  void Pfind_root_gf2n();
Line 111  void field_order_ff(N *);
Line 113  void field_order_ff(N *);
 int current_ff;  int current_ff;
   
 struct ftab poly_tab[] = {  struct ftab poly_tab[] = {
           {"headsgn",Pheadsgn,1},
           {"mul_trunc",Pmul_trunc,3},
         {"homogeneous_deg",Phomogeneous_deg,-2},          {"homogeneous_deg",Phomogeneous_deg,-2},
         {"homogeneous_part",Phomogeneous_part,-3},          {"homogeneous_part",Phomogeneous_part,-3},
         {"reorder",Preorder,3},          {"reorder",Preorder,3},
Line 155  struct ftab poly_tab[] = {
Line 159  struct ftab poly_tab[] = {
   
         {"ptosfp",Pptosfp,1},          {"ptosfp",Pptosfp,1},
         {"sfptop",Psfptop,1},          {"sfptop",Psfptop,1},
           {"sfptopsfp",Psfptopsfp,2},
         {"ptogf2n",Pptogf2n,1},          {"ptogf2n",Pptogf2n,1},
         {"gf2ntop",Pgf2ntop,-2},          {"gf2ntop",Pgf2ntop,-2},
         {"gf2ntovect",Pgf2ntovect,1},          {"gf2ntovect",Pgf2ntovect,1},
Line 222  struct ftab poly_tab[] = {
Line 227  struct ftab poly_tab[] = {
         {0,0,0},          {0,0,0},
 };  };
   
   void Pheadsgn(NODE arg,Q *rp)
   {
           int s;
   
           s = headsgn((P)ARG0(arg));
           STOQ(s,*rp);
   }
   
   void Pmul_trunc(NODE arg,P *rp)
   {
           P p1,p2,p,h;
           VL vl0,vl1,vl2,tvl,vl;
           VN vn;
           int i,n;
   
           p1 = (P)ARG0(arg);
           p2 = (P)ARG1(arg);
           get_vars((Obj)p1,&vl1); get_vars((Obj)p2,&vl2); mergev(CO,vl1,vl2,&tvl);
           p = (P)ARG2(arg);
           get_vars((Obj)p,&vl0); mergev(CO,tvl,vl0,&vl);
           for ( tvl = vl, n = 0; tvl; tvl = NEXT(tvl), n++ );
           vn = (VN) ALLOCA((n+1)*sizeof(struct oVN));
           for ( i = 0, tvl = vl; i < n; tvl = NEXT(tvl), i++ ) {
                   vn[i].v = tvl->v;
                   vn[i].n = 0;
           }
           vn[i].v = 0;
           vn[i].n = 0;
           for ( h = p, i = 0; OID(h) == O_P; h = COEF(DC(h)) ) {
                   for ( ; vn[i].v != VR(h); i++ );
                   vn[i].n = QTOS(DEG(DC(h)));
           }
           mulp_trunc(vl,p1,p2,vn,rp);
   }
   
 void Phomogeneous_part(NODE arg,P *rp)  void Phomogeneous_part(NODE arg,P *rp)
 {  {
         if ( argc(arg) == 2 )          if ( argc(arg) == 2 )
Line 1100  void Pptosfp(NODE arg,P *rp)
Line 1140  void Pptosfp(NODE arg,P *rp)
 void Psfptop(NODE arg,P *rp)  void Psfptop(NODE arg,P *rp)
 {  {
         sfptop((P)ARG0(arg),rp);          sfptop((P)ARG0(arg),rp);
   }
   
   void Psfptopsfp(NODE arg,P *rp)
   {
           sfptopsfp((P)ARG0(arg),VR((P)ARG1(arg)),rp);
 }  }
   
 void Pptogf2n(NODE arg,GF2N *rp)  void Pptogf2n(NODE arg,GF2N *rp)

Legend:
Removed from v.1.17  
changed lines
  Added in v.1.20

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