version 1.1, 2018/09/19 05:45:06 |
version 1.3, 2020/10/06 06:31:19 |
|
|
* 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: OpenXM_contrib2/asir2018/engine/F.c,v 1.2 2018/09/28 08:20:28 noro Exp $ |
*/ |
*/ |
#include "ca.h" |
#include "ca.h" |
#include <math.h> |
#include <math.h> |
Line 103 void homfctr(VL vl,P g,DCP *dcp) |
|
Line 103 void homfctr(VL vl,P g,DCP *dcp) |
|
for ( dct = dc; dct; dct = NEXT(dct) ) |
for ( dct = dc; dct; dct = NEXT(dct) ) |
if ( !NUM(dc->c) ) { |
if ( !NUM(dc->c) ) { |
for ( s = 0, f = dc->c, d = d0 = homdeg(f); f; d = homdeg(f) ) { |
for ( s = 0, f = dc->c, d = d0 = homdeg(f); f; d = homdeg(f) ) { |
exthp(vl,f,d,&h); STOQ(d0-d,e); pwrp(vl,x,e,&t); |
exthp(vl,f,d,&h); STOZ(d0-d,e); pwrp(vl,x,e,&t); |
mulp(vl,t,h,&u); addp(vl,s,u,&t); s = t; |
mulp(vl,t,h,&u); addp(vl,s,u,&t); s = t; |
subp(vl,f,h,&u); f = u; |
subp(vl,f,h,&u); f = u; |
} |
} |
Line 576 void mkssum(V v,int e,int s,int sgn,P *r) |
|
Line 576 void mkssum(V v,int e,int s,int sgn,P *r) |
|
} else { |
} else { |
NEWDC(NEXT(dc)); dc = NEXT(dc); |
NEWDC(NEXT(dc)); dc = NEXT(dc); |
} |
} |
STOQ(i*e,DEG(dc)); STOQ(sgnt,q),COEF(dc) = (P)q; |
STOZ(i*e,DEG(dc)); STOZ(sgnt,q),COEF(dc) = (P)q; |
} |
} |
NEXT(dc) = 0; MKP(v,dc0,*r); |
NEXT(dc) = 0; MKP(v,dc0,*r); |
} |
} |
Line 666 void sortfsrev(DCP *dcp) |
|
Line 666 void sortfsrev(DCP *dcp) |
|
void nthrootchk(P f,struct oDUM *dc,ML fp,DCP *dcp) |
void nthrootchk(P f,struct oDUM *dc,ML fp,DCP *dcp) |
{ |
{ |
register int i,k; |
register int i,k; |
int e,n,dr,tmp,t; |
int e,n,dr,t; |
|
unsigned int tmp; |
int *tmpp,**tmppp; |
int *tmpp,**tmppp; |
int **pp,**wpp; |
int **pp,**wpp; |
LUM fpa,tpa,f0l; |
LUM fpa,tpa,f0l; |
Line 838 void msqfrmain(VL vl,P p,DCP *dcp) |
|
Line 839 void msqfrmain(VL vl,P p,DCP *dcp) |
|
usqp(p0,&dc0); |
usqp(p0,&dc0); |
for ( d1 = 0, dc = dc0; dc; dc = NEXT(dc) ) |
for ( d1 = 0, dc = dc0; dc; dc = NEXT(dc) ) |
if ( DEG(dc) ) |
if ( DEG(dc) ) |
d1 += (QTOS(DEG(dc))-1)*UDEG(COEF(dc)); |
d1 += (ZTOS(DEG(dc))-1)*UDEG(COEF(dc)); |
if ( d1 == 0 ) { |
if ( d1 == 0 ) { |
/* p is squarefree */ |
/* p is squarefree */ |
NEWDC(dc); DEG(dc) = ONE; COEF(dc) = p; NEXT(dc) = 0; |
NEWDC(dc); DEG(dc) = ONE; COEF(dc) = p; NEXT(dc) = 0; |
Line 865 void msqfrmain(VL vl,P p,DCP *dcp) |
|
Line 866 void msqfrmain(VL vl,P p,DCP *dcp) |
|
usqp(p0,&dc0); |
usqp(p0,&dc0); |
for ( d1 = 0, dc = dc0; dc; dc = NEXT(dc) ) |
for ( d1 = 0, dc = dc0; dc; dc = NEXT(dc) ) |
if ( DEG(dc) ) |
if ( DEG(dc) ) |
d1 += (QTOS(DEG(dc))-1)*UDEG(COEF(dc)); |
d1 += (ZTOS(DEG(dc))-1)*UDEG(COEF(dc)); |
|
|
if ( d1 == 0 ) { |
if ( d1 == 0 ) { |
NEWDC(dc); DEG(dc) = ONE; COEF(dc) = g; NEXT(dc) = 0; |
NEWDC(dc); DEG(dc) = ONE; COEF(dc) = g; NEXT(dc) = 0; |
Line 949 void msqfrmainmain(VL vl,P p,VN vn,P p0,DCP dc0,DCP *d |
|
Line 950 void msqfrmainmain(VL vl,P p,VN vn,P p0,DCP dc0,DCP *d |
|
break; |
break; |
} else { |
} else { |
for ( t = f, t0 = f0, |
for ( t = f, t0 = f0, |
j = 0, k = QTOS(DEG(a[i]))-1; j < k; j++ ) { |
j = 0, k = ZTOS(DEG(a[i]))-1; j < k; j++ ) { |
diffp(vl,t,v,&s); t = s; |
diffp(vl,t,v,&s); t = s; |
diffp(vl,t0,v,&s); t0 = s; |
diffp(vl,t0,v,&s); t0 = s; |
} |
} |
Line 989 void msqfrmainmain(VL vl,P p,VN vn,P p0,DCP dc0,DCP *d |
|
Line 990 void msqfrmainmain(VL vl,P p,VN vn,P p0,DCP dc0,DCP *d |
|
|
|
pwrp(vl,COEF(dcb),DEG(a[i]),&s); |
pwrp(vl,COEF(dcb),DEG(a[i]),&s); |
for ( t = LC(f), j = 0; divtpz(vl,t,s,&tt); j++, t = tt ); |
for ( t = LC(f), j = 0; divtpz(vl,t,s,&tt); j++, t = tt ); |
STOQ(j,qq); |
STOZ(j,qq); |
if ( cmpz(qq,DEG(dcb)) > 0 ) |
if ( cmpz(qq,DEG(dcb)) > 0 ) |
qq = DEG(dcb); |
qq = DEG(dcb); |
pwrp(vl,COEF(dcb),qq,&t); mulp(vl,u,t,&s); u = s; |
pwrp(vl,COEF(dcb),qq,&t); mulp(vl,u,t,&s); u = s; |
Line 1138 void estimatelc(VL vl,Z c,DCP dc,VN vn,P *lcp) |
|
Line 1139 void estimatelc(VL vl,Z c,DCP dc,VN vn,P *lcp) |
|
mulp(vl,r,COEF(dct),&s); r = s; |
mulp(vl,r,COEF(dct),&s); r = s; |
} else { |
} else { |
substvp(vl,COEF(dct),vn,(P *)&c0); |
substvp(vl,COEF(dct),vn,(P *)&c0); |
for ( i = 0, c1 = c; i < (int)QTOS(DEG(dct)); i++ ) { |
for ( i = 0, c1 = c; i < (int)ZTOS(DEG(dct)); i++ ) { |
divz(c1,c0,&c2); |
divz(c1,c0,&c2); |
if ( !INT(c2) ) |
if ( !INT(c2) ) |
break; |
break; |
Line 1146 void estimatelc(VL vl,Z c,DCP dc,VN vn,P *lcp) |
|
Line 1147 void estimatelc(VL vl,Z c,DCP dc,VN vn,P *lcp) |
|
c1 = c2; |
c1 = c2; |
} |
} |
if ( i ) { |
if ( i ) { |
STOQ(i,c1); |
STOZ(i,c1); |
pwrp(vl,COEF(dct),c1,&s); mulp(vl,r,s,&t); r = t; |
pwrp(vl,COEF(dct),c1,&s); mulp(vl,r,s,&t); r = t; |
} |
} |
} |
} |
Line 1232 void afctrmain(VL vl,P p0,P p,int init,DCP *dcp) |
|
Line 1233 void afctrmain(VL vl,P p0,P p,int init,DCP *dcp) |
|
|
|
v = VR(p); MKV(v,x); |
v = VR(p); MKV(v,x); |
v0 = VR(p0); MKV(v0,y); |
v0 = VR(p0); MKV(v0,y); |
STOQ(init,q),s = (P)q; |
STOZ(init,q),s = (P)q; |
mulp(vl,s,y,&m); subp(vl,x,m,&t); addp(vl,x,m,&a); |
mulp(vl,s,y,&m); subp(vl,x,m,&t); addp(vl,x,m,&a); |
substp(vl,p,v,t,&pt); |
substp(vl,p,v,t,&pt); |
remsdcp(vl,pt,p0,&pt1); |
remsdcp(vl,pt,p0,&pt1); |