=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/fctr.c,v retrieving revision 1.10 retrieving revision 1.12 diff -u -p -r1.10 -r1.12 --- OpenXM_contrib2/asir2000/builtin/fctr.c 2001/11/19 00:57:10 1.10 +++ OpenXM_contrib2/asir2000/builtin/fctr.c 2002/01/13 07:11:46 1.12 @@ -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/fctr.c,v 1.9 2001/10/09 01:36:05 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/fctr.c,v 1.11 2002/01/09 07:45:40 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -54,9 +54,11 @@ void Pfctr(), Pgcd(), Pgcdz(), Plcm(), Psqfr(), Pufctr void Pptozp(), Pcont(); void Pafctr(), Pagcd(); void Pmodsqfr(),Pmodfctr(),Pddd(),Pnewddd(),Pddd_tab(); -void Psfsqfr(),Psfbfctr(),Psfufctr(); +void Psfsqfr(),Psfbfctr(),Psfufctr(),Psfmintdeg(); void Pirred_check(), Pnfctr_mod(); +void sfmintdeg(VL vl,P fx,int dy,int c,P *fr); + struct ftab fctr_tab[] = { {"fctr",Pfctr,-2}, {"gcd",Pgcd,-3}, @@ -73,6 +75,7 @@ struct ftab fctr_tab[] = { {"sfsqfr",Psfsqfr,1}, {"sfufctr",Psfufctr,1}, {"sfbfctr",Psfbfctr,-4}, + {"sfmintdeg",Psfmintdeg,5}, #if 0 {"ddd",Pddd,2}, {"newddd",Pnewddd,2}, @@ -367,6 +370,27 @@ LIST *rp; reorderp(CO,vl,COEF(dct),&t); COEF(dct) = t; } dcptolist(dc,rp); +} + +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)