=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/fctr.c,v retrieving revision 1.7 retrieving revision 1.9 diff -u -p -r1.7 -r1.9 --- OpenXM_contrib2/asir2000/builtin/fctr.c 2001/06/25 10:01:27 1.7 +++ OpenXM_contrib2/asir2000/builtin/fctr.c 2001/10/09 01:36:05 1.9 @@ -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.6 2001/06/20 09:30:33 noro Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/builtin/fctr.c,v 1.8 2001/06/26 03:00:40 noro Exp $ */ #include "ca.h" #include "parse.h" @@ -325,7 +325,6 @@ NODE arg; LIST *rp; { DCP dc; - int mod; fctrsf(ARG0(arg),&dc); if ( !dc ) { @@ -339,20 +338,22 @@ NODE arg; LIST *rp; { V x,y; - GFS ev; - DCP dc; - LIST l; - NODE n0,n1; + DCP dc,dct; + P t; + struct oVL vl1,vl2; + VL vl; x = VR((P)ARG1(arg)); y = VR((P)ARG2(arg)); - sfbfctr((P)ARG0(arg),x,y,&ev,&dc); - if ( !dc ) { - NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; + vl1.v = x; vl1.next = &vl2; + vl2.v = y; vl2.next = 0; + vl = &vl1; + + sfbfctr((P)ARG0(arg),x,y,&dc); + for ( dct = dc; dct; dct = NEXT(dct) ) { + reorderp(CO,vl,COEF(dct),&t); COEF(dct) = t; } - dcptolist(dc,&l); - MKNODE(n1,l,0); MKNODE(n0,ev,n1); - MKLIST(*rp,n1); + dcptolist(dc,rp); } void Pmodsqfr(arg,rp) @@ -361,10 +362,10 @@ LIST *rp; { DCP dc; - if ( !dc ) { + if ( !ARG0(arg) ) { NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; - } - modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),SQFR,&dc); + } else + modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),SQFR,&dc); dcptolist(dc,rp); } @@ -374,10 +375,10 @@ LIST *rp; { DCP dc; - if ( !dc ) { + if ( !ARG0(arg) ) { NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; - } - modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),DDD,&dc); + } else + modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),DDD,&dc); dcptolist(dc,rp); } @@ -385,12 +386,12 @@ void Pnewddd(arg,rp) NODE arg; LIST *rp; { - DCP dc; + DCP dc=0; - if ( !dc ) { + if ( !ARG0(arg) ) { NEWDC(dc); COEF(dc) = 0; DEG(dc) = ONE; NEXT(dc) = 0; - } - modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),NEWDDD,&dc); + } else + modfctrp(ARG0(arg),QTOS((Q)ARG1(arg)),NEWDDD,&dc); dcptolist(dc,rp); }