[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.11 and 1.13

version 1.11, 2001/05/28 08:22:00 version 1.13, 2001/07/13 08:25:21
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.10 2001/05/09 01:41:41 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/poly.c,v 1.12 2001/06/29 09:08:52 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 63  void Pp_mag(),Pmaxblen();
Line 63  void Pp_mag(),Pmaxblen();
 void Pmergelist(), Pch_mv(), Pre_mv(), Pdeglist();  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();  void Pptosfp(),Psfptop(),Psf_galois_action(),Psf_embed(),Psf_find_root();
   void Psf_minipoly(),Psf_log();
 void Pptogf2n(),Pgf2ntop(),Pgf2ntovect();  void Pptogf2n(),Pgf2ntop(),Pgf2ntovect();
 void Pptogfpn(),Pgfpntop();  void Pptogfpn(),Pgfpntop();
 void Pfind_root_gf2n();  void Pfind_root_gf2n();
Line 151  struct ftab poly_tab[] = {
Line 152  struct ftab poly_tab[] = {
         {"lmptop",Plmptop,1},          {"lmptop",Plmptop,1},
   
         {"sf_galois_action",Psf_galois_action,2},          {"sf_galois_action",Psf_galois_action,2},
           {"sf_find_root",Psf_find_root,1},
           {"sf_minipoly",Psf_minipoly,2},
           {"sf_embed",Psf_embed,3},
           {"sf_log",Psf_log,1},
   
         {"ptosfp",Pptosfp,1},          {"ptosfp",Pptosfp,1},
         {"sfptop",Psfptop,1},          {"sfptop",Psfptop,1},
   
         {"ptogf2n",Pptogf2n,1},          {"ptogf2n",Pptogf2n,1},
         {"gf2ntop",Pgf2ntop,-2},          {"gf2ntop",Pgf2ntop,-2},
         {"gf2ntovect",Pgf2ntovect,1},          {"gf2ntovect",Pgf2ntovect,1},
Line 1186  NODE arg;
Line 1191  NODE arg;
 P *rp;  P *rp;
 {  {
         sf_galois_action(ARG0(arg),ARG1(arg),rp);          sf_galois_action(ARG0(arg),ARG1(arg),rp);
   }
   
   /*
     sf_embed(F,B,PM)
     F : an element of GF(pn)
     B : the image of the primitive root of GF(pn)
     PM : order of GF(pm)
   */
   
   void Psf_embed(arg,rp)
   NODE arg;
   P *rp;
   {
           int k,pm;
   
           /* GF(pn)={0,1,a,a^2,...}->GF(pm)={0,1,b,b^2,...}; a->b^k */
           k = CONT((GFS)ARG1(arg));
           pm = QTOS((Q)ARG2(arg));
           sf_embed((P)ARG0(arg),k,pm,rp);
   }
   
   void Psf_log(arg,rp)
   NODE arg;
   Q *rp;
   {
           int k;
   
           if ( !ARG0(arg) )
                   error("sf_log : invalid armument");
           k = CONT((GFS)ARG0(arg));
           STOQ(k,*rp);
   }
   
   void Psf_find_root(arg,rp)
   NODE arg;
   GFS *rp;
   {
           P p;
           Obj t;
           int d;
           UM u;
           int *root;
   
           p = (P)ARG0(arg);
           simp_ff((Obj)p,&t); p = (P)t;
           d = getdeg(VR(p),p);
           u = W_UMALLOC(d);
           ptosfum(p,u);
           root = (int *)ALLOCA(d*sizeof(int));
           find_rootsf(u,root);
           MKGFS(IFTOF(root[0]),*rp);
   }
   
   void Psf_minipoly(arg,rp)
   NODE arg;
   P *rp;
   {
           Obj t;
           P p1,p2;
           int d1,d2;
           UM up1,up2,m;
   
           p1 = (P)ARG0(arg); simp_ff((Obj)p1,&t); p1 = (P)t;
           p2 = (P)ARG1(arg); simp_ff((Obj)p2,&t); p2 = (P)t;
           d1 = getdeg(VR(p1),p1); up1 = W_UMALLOC(d1); ptosfum(p1,up1);
           d2 = getdeg(VR(p2),p2); up2 = W_UMALLOC(d2); ptosfum(p2,up2);
           m = W_UMALLOC(d2);
           minipolysf(up1,up2,m);
           sfumtop(VR(p2),m,&p1);
           sfptop(p1,rp);
 }  }
   
 void Pptosfp(arg,rp)  void Pptosfp(arg,rp)

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

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