=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/Fgfs.c,v retrieving revision 1.17 retrieving revision 1.20 diff -u -p -r1.17 -r1.20 --- OpenXM_contrib2/asir2000/engine/Fgfs.c 2003/01/13 06:40:41 1.17 +++ OpenXM_contrib2/asir2000/engine/Fgfs.c 2004/02/03 23:31:57 1.20 @@ -1,4 +1,4 @@ -/* $OpenXM: OpenXM_contrib2/asir2000/engine/Fgfs.c,v 1.16 2003/01/06 09:23:27 noro Exp $ */ +/* $OpenXM: OpenXM_contrib2/asir2000/engine/Fgfs.c,v 1.19 2003/03/12 02:06:11 noro Exp $ */ #include "ca.h" @@ -497,12 +497,12 @@ void cont_pp_mv_sf(VL vl,VL rvl,P p,P *c,P *pp) MP t; int i,m; P *ps; - struct order_spec spec, currentspec; - extern struct order_spec dp_current_spec; + struct order_spec *spec, *currentspec; + extern struct order_spec *dp_current_spec; currentspec = dp_current_spec; - create_order_spec(0,&spec); - initd(&spec); + create_order_spec(0,0,spec); + initd(spec); ptod(vl,rvl,p,&dp); for ( t = BDY(dp), m = 0; t; t = NEXT(t), m++ ); ps = (P *)ALLOCA(m*sizeof(P)); @@ -510,7 +510,7 @@ void cont_pp_mv_sf(VL vl,VL rvl,P p,P *c,P *pp) ps[i] = C(t); gcdsf(vl,ps,m,c); divsp(vl,p,*c,pp); - initd(¤tspec); + initd(currentspec); } void mfctrsf(VL vl, P f, DCP *dcp) @@ -561,7 +561,7 @@ void mfctrsfmain(VL vl, P f, DCP *dcp) return; } for ( n = 0, tvl = vl; tvl; tvl = NEXT(tvl), n++ ); - va = (V *)ALLOCA(n*sizeof(int)); + va = (V *)ALLOCA(n*sizeof(V)); da = (int *)ALLOCA(n*sizeof(int)); /* find v s.t. diff(f,v) is nonzero and deg(f,v) is minimal */ imin = -1; @@ -979,6 +979,12 @@ void mfctrsf_hensel(VL vl,VL rvl,P f,P pp0,P u0,P v0,P addp(vl,v,wv,&t); v = t; addp(vl,vh[j],wv,&t); vh[j] = t; } + gfsn_poly_to_poly(vl,u,vy,&t); + shift_sf(vl,rvl,t,mev,-1,&s); + if ( divtp(vl,fin,s,&q) ) + cont_pp_mv_sf(vl,onevl,s,&cont,up); + else + *up = 0; } void adjust_coef_sf(VL vl,VL rvl,P lcu,P u0,int *mev,P *r)