version 1.12, 2002/11/26 07:09:45 |
version 1.13, 2002/11/26 08:21:49 |
|
|
/* $OpenXM: OpenXM_contrib2/asir2000/engine/Fgfs.c,v 1.11 2002/11/22 08:44:57 noro Exp $ */ |
/* $OpenXM: OpenXM_contrib2/asir2000/engine/Fgfs.c,v 1.12 2002/11/26 07:09:45 noro Exp $ */ |
|
|
#include "ca.h" |
#include "ca.h" |
|
|
Line 51 void sqfrsf(VL vl, P f, DCP *dcp) |
|
Line 51 void sqfrsf(VL vl, P f, DCP *dcp) |
|
DCP dc,dct; |
DCP dc,dct; |
Obj obj; |
Obj obj; |
P t,s,c; |
P t,s,c; |
VL tvl,nvl; |
VL tvl,onevl; |
|
|
simp_ff((Obj)f,&obj); f = (P)obj; |
simp_ff((Obj)f,&obj); f = (P)obj; |
lex_lc(f,&c); divsp(vl,f,c,&t); f = t; |
lex_lc(f,&c); divsp(vl,f,c,&t); f = t; |
monomialfctr(vl,f,&t,&dc); f = t; |
monomialfctr(vl,f,&t,&dc); f = t; |
clctv(vl,f,&tvl); vl = tvl; |
clctv(vl,f,&tvl); vl = tvl; |
|
NEWVL(onevl); NEXT(onevl)=0; |
if ( !vl ) |
if ( !vl ) |
; |
; |
else if ( !NEXT(vl) ) { |
else if ( !NEXT(vl) ) { |
Line 65 void sqfrsf(VL vl, P f, DCP *dcp) |
|
Line 66 void sqfrsf(VL vl, P f, DCP *dcp) |
|
} else { |
} else { |
t = f; |
t = f; |
for ( tvl = vl; tvl; tvl = NEXT(tvl) ) { |
for ( tvl = vl; tvl; tvl = NEXT(tvl) ) { |
reordvar(vl,tvl->v,&nvl); |
onevl->v = tvl->v; |
cont_pp_mv_sf(vl,NEXT(nvl),t,&c,&s); t = s; |
cont_pp_mv_sf(vl,onevl,t,&c,&s); t = s; |
sqfrsf(vl,c,&dct); |
sqfrsf(vl,c,&dct); |
dc = append_dc(dc,NEXT(dct)); |
dc = append_dc(dc,NEXT(dct)); |
} |
} |
Line 822 void mfctrsf_hensel(VL vl,VL rvl,P f,P pp0,P u0,P v0,P |
|
Line 823 void mfctrsf_hensel(VL vl,VL rvl,P f,P pp0,P u0,P v0,P |
|
P *cu,*cv; |
P *cu,*cv; |
GFSN inv; |
GFSN inv; |
|
|
/* adjust coeffs */ |
/* check the validity of lc's and adjust coeffs */ |
|
/* f -> lcu*lcv*x^(m+l)+... */ |
|
mulp(vl,lcu,lcv,&t); |
|
if ( !divtp(vl,t,LC(f),&m) ) { |
|
*up = 0; return; |
|
} |
|
mulp(vl,m,f,&t); f = t; |
/* u0 = am x^m+ ... -> lcu*x^m + a(m-1)*(lcu(mev)/am)*x^(m-1)+... */ |
/* u0 = am x^m+ ... -> lcu*x^m + a(m-1)*(lcu(mev)/am)*x^(m-1)+... */ |
/* v0 = bm x^l+ ... -> lcv*x^l + b(l-1)*(lcv(mev)/bl)*x^(l-1)+... */ |
/* v0 = bm x^l+ ... -> lcv*x^l + b(l-1)*(lcv(mev)/bl)*x^(l-1)+... */ |
/* f -> lcu*lcv*x^(m+l)+... */ |
|
adjust_coef_sf(vl,rvl,lcu,u0,mev,&u); |
adjust_coef_sf(vl,rvl,lcu,u0,mev,&u); |
adjust_coef_sf(vl,rvl,lcv,v0,mev,&v); |
adjust_coef_sf(vl,rvl,lcv,v0,mev,&v); |
mulp(vl,lcu,lcv,&t); divsp(vl,t,LC(f),&m); mulp(vl,m,f,&t); f = t; |
|
|
|
/* f <- f(X+mev), u <- u(X+mev), v <- v(X+mev) */ |
/* f <- f(X+mev), u <- u(X+mev), v <- v(X+mev) */ |
fin = f; |
fin = f; |