diff options
author | Jakub Jelinek <jakub@redhat.com> | 2011-08-04 15:40:16 -0400 |
---|---|---|
committer | Ulrich Drepper <drepper@gmail.com> | 2011-08-04 15:40:16 -0400 |
commit | 85188888f63b9fc7f40437baeed4c7d6e4f30e18 (patch) | |
tree | 6a502d80c5cb17106625ad7e97e333b8f2fd4ce8 | |
parent | b969a69b2e6f5d83fb7434a91e415d39cd1d3f07 (diff) | |
download | glibc-85188888f63b9fc7f40437baeed4c7d6e4f30e18.tar glibc-85188888f63b9fc7f40437baeed4c7d6e4f30e18.tar.gz glibc-85188888f63b9fc7f40437baeed4c7d6e4f30e18.tar.bz2 glibc-85188888f63b9fc7f40437baeed4c7d6e4f30e18.zip |
Fix up __kernel_rem_pio2 for FLT_EVAL_METHOD != 0 architectures
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sysdeps/ieee754/dbl-64/k_rem_pio2.c | 18 |
2 files changed, 17 insertions, 6 deletions
@@ -1,3 +1,8 @@ +2011-08-01 Jakub Jelinek <jakub@redhat.com> + + * sysdeps/ieee754/dbl-64/k_rem_pio2.c (__kernel_rem_pio2): Fix up fq + to y conversion for prec 3 and __FLT_EVAL_METHOD__ != 0. + 2011-07-22 Liubov Dmitrieva <liubov.dmitrieva@intel.com> * sysdeps/i386/i686/multiarch/strcat-sse2.S: Update. diff --git a/sysdeps/ieee754/dbl-64/k_rem_pio2.c b/sysdeps/ieee754/dbl-64/k_rem_pio2.c index ccf1633bd4..911ff1fe35 100644 --- a/sysdeps/ieee754/dbl-64/k_rem_pio2.c +++ b/sysdeps/ieee754/dbl-64/k_rem_pio2.c @@ -300,14 +300,20 @@ recompute: break; case 3: /* painful */ for (i=jz;i>0;i--) { - fw = fq[i-1]+fq[i]; - fq[i] += fq[i-1]-fw; - fq[i-1] = fw; +#if __FLT_EVAL_METHOD__ != 0 + volatile +#endif + double fv = (double)(fq[i-1]+fq[i]); + fq[i] += fq[i-1]-fv; + fq[i-1] = fv; } for (i=jz;i>1;i--) { - fw = fq[i-1]+fq[i]; - fq[i] += fq[i-1]-fw; - fq[i-1] = fw; +#if __FLT_EVAL_METHOD__ != 0 + volatile +#endif + double fv = (double)(fq[i-1]+fq[i]); + fq[i] += fq[i-1]-fv; + fq[i-1] = fv; } for (fw=0.0,i=jz;i>=2;i--) fw += fq[i]; if(ih==0) { |