=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2018/engine/up.c,v retrieving revision 1.1 retrieving revision 1.3 diff -u -p -r1.1 -r1.3 --- OpenXM_contrib2/asir2018/engine/up.c 2018/09/19 05:45:07 1.1 +++ OpenXM_contrib2/asir2018/engine/up.c 2019/03/03 05:21:17 1.3 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM$ + * $OpenXM: OpenXM_contrib2/asir2018/engine/up.c,v 1.2 2018/09/28 08:20:28 noro Exp $ */ #include "ca.h" #include @@ -163,7 +163,7 @@ void reversep(P p1,Q d,P *rp) *rp = 0; else { ptoup(p1,&n1); - reverseup(n1,QTOS(d),&r); + reverseup(n1,ZTOS(d),&r); uptop(r,rp); } } @@ -176,7 +176,7 @@ void invmodp(P p1,Q d,P *rp) error("invmodp : invalid input"); else { ptoup(p1,&n1); - invmodup(n1,QTOS(d),&r); + invmodup(n1,ZTOS(d),&r); uptop(r,rp); } } @@ -296,6 +296,8 @@ void hybrid_squareup(int ff,UP n1,UP *nr) void hybrid_tmulup(int ff,UP n1,UP n2,int d,UP *nr) { + UP t; + if ( !n1 || !n2 ) *nr = 0; else if ( MAX(n1->d,n2->d) < up_fft_mag ) @@ -681,7 +683,7 @@ void pwrup(UP n,Z e,UP *nr) else if ( UNIQ(e) ) *nr = n; else { - STOQ(2,two); + STOZ(2,two); while ( 1 ) { divqrz(e,two,&q,&r); e = q; if ( r ) { @@ -856,7 +858,7 @@ void rembymulup(UP n1,UP n2,UP *nr) void hybrid_rembymulup_special(int ff,UP n1,UP n2,UP inv2,UP *nr) { int d1,d2,d; - UP r1,t,s,q; + UP r1,t,s,q,t1; if ( !n2 ) error("hybrid_rembymulup : division by 0"); @@ -1112,7 +1114,7 @@ void fmarraytoup(ModNum *f,int d,UP *nr) } else { *nr = r = UPALLOC(d); c = (Z *)r->c; for ( i = 0; i <= d; i++ ) { - UTOQ((unsigned int)f[i],c[i]); + UTOZ((unsigned int)f[i],c[i]); } for ( i = d; i >= 0 && !c[i]; i-- ); if ( i < 0 ) @@ -1363,12 +1365,12 @@ void fft_mulup_main(UP n1,UP n2,int dbd,UP *nr) } if ( cond ) error("fft_mulup : error in FFT_pol_product"); - STOQ(mod,m1); mulz(m,m1,&m2); m = m2; + STOZ(mod,m1); mulz(m,m1,&m2); m = m2; if ( z_bits((Q)m) > bound ) { if ( !dbd ) dbd = d1+d2+1; crup(frarray,MIN(d1+d2,dbd-1),modarray,frarray_index,m,&r); - STOQ(2,two); + STOZ(2,two); divqrz(m,two,&m2,&rem); adj_coefup(r,m,m2,nr); return; @@ -1384,6 +1386,7 @@ void crup(ModNum **f,int d,int *mod,int index,Z m,UP * mpz_t cof,c,rem; mpz_t *s; UP u; + Z z; int inv,i,j,t; mpz_init(c); mpz_init(cof); mpz_init(rem); @@ -1408,8 +1411,9 @@ void crup(ModNum **f,int d,int *mod,int index,Z m,UP * else { u = UPALLOC(i); DEG(u) = i; - for ( j = 0; j <= i; j++ ) - COEF(u)[j] = (Num)s[j]; + for ( j = 0; j <= i; j++ ) { + MPZTOZ(s[j],z); COEF(u)[j] = (Num)z; + } remcup(u,m,r); } } @@ -1462,7 +1466,7 @@ void fft_mulup_specialmod_main(UP n1,UP n2,int dbd,int } if ( cond ) error("fft_mulup_specialmod_main : error in FFT_pol_product"); - STOQ(modarray[i],m1); mulz(m,m1,&m2); m = m2; + STOZ(modarray[i],m1); mulz(m,m1,&m2); m = m2; } if ( !dbd ) dbd = d1+d2+1;