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

Diff for /OpenXM_contrib2/asir2000/builtin/fctr.c between version 1.7 and 1.12

version 1.7, 2001/06/25 10:01:27 version 1.12, 2002/01/13 07:11:46
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/fctr.c,v 1.6 2001/06/20 09:30:33 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/builtin/fctr.c,v 1.11 2002/01/09 07:45:40 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 54  void Pfctr(), Pgcd(), Pgcdz(), Plcm(), Psqfr(), Pufctr
Line 54  void Pfctr(), Pgcd(), Pgcdz(), Plcm(), Psqfr(), Pufctr
 void Pptozp(), Pcont();  void Pptozp(), Pcont();
 void Pafctr(), Pagcd();  void Pafctr(), Pagcd();
 void Pmodsqfr(),Pmodfctr(),Pddd(),Pnewddd(),Pddd_tab();  void Pmodsqfr(),Pmodfctr(),Pddd(),Pnewddd(),Pddd_tab();
 void Psffctr(),Psfbfctr();  void Psfsqfr(),Psfbfctr(),Psfufctr(),Psfmintdeg();
 void Pirred_check(), Pnfctr_mod();  void Pirred_check(), Pnfctr_mod();
   
   void sfmintdeg(VL vl,P fx,int dy,int c,P *fr);
   
 struct ftab fctr_tab[] = {  struct ftab fctr_tab[] = {
         {"fctr",Pfctr,-2},          {"fctr",Pfctr,-2},
         {"gcd",Pgcd,-3},          {"gcd",Pgcd,-3},
Line 70  struct ftab fctr_tab[] = {
Line 72  struct ftab fctr_tab[] = {
         {"agcd",Pagcd,3},          {"agcd",Pagcd,3},
         {"modsqfr",Pmodsqfr,2},          {"modsqfr",Pmodsqfr,2},
         {"modfctr",Pmodfctr,2},          {"modfctr",Pmodfctr,2},
         {"sffctr",Psffctr,1},          {"sfsqfr",Psfsqfr,1},
         {"sfbfctr",Psfbfctr,3},          {"sfufctr",Psfufctr,1},
           {"sfbfctr",Psfbfctr,-4},
           {"sfmintdeg",Psfmintdeg,5},
 #if 0  #if 0
         {"ddd",Pddd,2},          {"ddd",Pddd,2},
         {"newddd",Pnewddd,2},          {"newddd",Pnewddd,2},
Line 320  LIST *rp;
Line 324  LIST *rp;
         dcptolist(dc,rp);          dcptolist(dc,rp);
 }  }
   
 void Psffctr(arg,rp)  void Psfsqfr(arg,rp)
 NODE arg;  NODE arg;
 LIST *rp;  LIST *rp;
 {  {
         DCP dc;          DCP dc;
         int mod;  
   
           sfsqfr(ARG0(arg),&dc);
           dcptolist(dc,rp);
   }
   
   void Psfufctr(arg,rp)
   NODE arg;
   LIST *rp;
   {
           DCP dc;
   
         fctrsf(ARG0(arg),&dc);          fctrsf(ARG0(arg),&dc);
         if ( !dc ) {  
                 NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;  
         }  
         dcptolist(dc,rp);          dcptolist(dc,rp);
 }  }
   
Line 339  NODE arg;
Line 349  NODE arg;
 LIST *rp;  LIST *rp;
 {  {
         V x,y;          V x,y;
         GFS ev;          DCP dc,dct;
         DCP dc;          P t;
         LIST l;          struct oVL vl1,vl2;
         NODE n0,n1;          VL vl;
           int degbound;
   
         x = VR((P)ARG1(arg));          x = VR((P)ARG1(arg));
         y = VR((P)ARG2(arg));          y = VR((P)ARG2(arg));
         sfbfctr((P)ARG0(arg),x,y,&ev,&dc);          vl1.v = x; vl1.next = &vl2;
         if ( !dc ) {          vl2.v = y; vl2.next = 0;
                 NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;          vl = &vl1;
           if ( argc(arg) == 4 )
                   degbound = QTOS((Q)ARG3(arg));
           else
                   degbound = -1;
   
           sfbfctr((P)ARG0(arg),x,y,degbound,&dc);
           for ( dct = dc; dct; dct = NEXT(dct) ) {
                   reorderp(CO,vl,COEF(dct),&t); COEF(dct) = t;
         }          }
         dcptolist(dc,&l);          dcptolist(dc,rp);
         MKNODE(n1,l,0); MKNODE(n0,ev,n1);  
         MKLIST(*rp,n1);  
 }  }
   
   void Psfmintdeg(arg,rp)
   NODE arg;
   P *rp;
   {
           V x,y;
           P r;
           struct oVL vl1,vl2;
           VL vl;
           int dy,c;
   
           x = VR((P)ARG1(arg));
           y = VR((P)ARG2(arg));
           vl1.v = x; vl1.next = &vl2;
           vl2.v = y; vl2.next = 0;
           vl = &vl1;
           dy = QTOS((Q)ARG3(arg));
           c = QTOS((Q)ARG4(arg));
           sfmintdeg(vl,(P)ARG0(arg),dy,c,&r);
           reorderp(CO,vl,r,rp);
   }
   
 void Pmodsqfr(arg,rp)  void Pmodsqfr(arg,rp)
 NODE arg;  NODE arg;
 LIST *rp;  LIST *rp;
 {  {
         DCP dc;          DCP dc;
   
         if ( !dc ) {          if ( !ARG0(arg) ) {
                 NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;                  NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;
         }          } else
         modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),SQFR,&dc);                  modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),SQFR,&dc);
         dcptolist(dc,rp);          dcptolist(dc,rp);
 }  }
   
Line 374  LIST *rp;
Line 412  LIST *rp;
 {  {
         DCP dc;          DCP dc;
   
         if ( !dc ) {          if ( !ARG0(arg) ) {
                 NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;                  NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;
         }          } else
         modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),DDD,&dc);                  modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),DDD,&dc);
         dcptolist(dc,rp);          dcptolist(dc,rp);
 }  }
   
Line 385  void Pnewddd(arg,rp)
Line 423  void Pnewddd(arg,rp)
 NODE arg;  NODE arg;
 LIST *rp;  LIST *rp;
 {  {
         DCP dc;          DCP dc=0;
   
         if ( !dc ) {          if ( !ARG0(arg) ) {
                 NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;                  NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0;
         }          } else
         modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),NEWDDD,&dc);                  modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),NEWDDD,&dc);
         dcptolist(dc,rp);          dcptolist(dc,rp);
 }  }
   

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

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