diff options
Diffstat (limited to 'math/atest-sincos.c')
-rw-r--r-- | math/atest-sincos.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/math/atest-sincos.c b/math/atest-sincos.c index bea157c288..313bccb884 100644 --- a/math/atest-sincos.c +++ b/math/atest-sincos.c @@ -64,7 +64,6 @@ sincosx_mpn (mp1 si, mp1 co, mp1 xx, mp1 ix) int i; mp2 s[4], c[4]; mp1 tmp, x; - mp_limb_t chk, round; if (ix == NULL) { @@ -79,34 +78,38 @@ sincosx_mpn (mp1 si, mp1 co, mp1 xx, mp1 ix) for (i = 0; i < 1 << N; i++) { #define add_shift_mulh(d,x,s1,s2,sh,n) \ - /* d = (n ? -1 : 1) * (s1 + (s2>>sh)) * x / (1>>N); */ \ do { \ if (s2 != NULL) { \ if (sh > 0) { \ assert (sh < mpbpl); \ mpn_lshift (tmp, s1, SZ, sh); \ - chk = (n ? mpn_sub_n : mpn_add_n)(tmp,tmp,s2+FRAC/mpbpl,SZ); \ - } else \ - chk = (n ? mpn_sub_n : mpn_add_n)(tmp,s1,s2+FRAC/mpbpl,SZ); \ - /* assert(chk == 0); */ \ + if (n) \ + mpn_sub_n (tmp,tmp,s2+FRAC/mpbpl,SZ); \ + else \ + mpn_add_n (tmp,tmp,s2+FRAC/mpbpl,SZ); \ + } else { \ + if (n) \ + mpn_sub_n (tmp,s1,s2+FRAC/mpbpl,SZ); \ + else \ + mpn_add_n (tmp,s1,s2+FRAC/mpbpl,SZ); \ + } \ mpn_mul_n(d,tmp,x,SZ); \ } else \ mpn_mul_n(d,s1,x,SZ); \ - /* assert(d[SZ*2-1] == 0); */ \ assert(N+sh < mpbpl); \ if (N+sh > 0) mpn_rshift(d,d,2*SZ,N+sh); \ } while(0) #define summ(d,ss,s,n) \ - /* d = ss +/- (s[0]+2*s[1]+2*s[2]+s[3])/6; */ \ do { \ - chk = mpn_add_n(tmp,s[1]+FRAC/mpbpl,s[2]+FRAC/mpbpl,SZ); \ + mpn_add_n(tmp,s[1]+FRAC/mpbpl,s[2]+FRAC/mpbpl,SZ); \ mpn_lshift(tmp,tmp,SZ,1); \ - chk |= mpn_add_n(tmp,tmp,s[0]+FRAC/mpbpl,SZ); \ - chk |= mpn_add_n(tmp,tmp,s[3]+FRAC/mpbpl,SZ); \ - round = mpn_divmod_1(tmp,tmp,SZ,6); \ - /* chk |= mpn_add_1(tmp,tmp,SZ, (round > 3) ); */ \ - chk |= (n ? mpn_sub_n : mpn_add_n)(d,ss,tmp,SZ); \ - /* assert(chk == 0); */ \ + mpn_add_n(tmp,tmp,s[0]+FRAC/mpbpl,SZ); \ + mpn_add_n(tmp,tmp,s[3]+FRAC/mpbpl,SZ); \ + mpn_divmod_1(tmp,tmp,SZ,6); \ + if (n) \ + mpn_sub_n (d,ss,tmp,SZ); \ + else \ + mpn_add_n (d,ss,tmp,SZ); \ } while (0) add_shift_mulh (s[0], x, co, NULL, 0, 0); /* s0 = h * c; */ |