path: root/src/math/__rem_pio2_large.c
diff options
authorSzabolcs Nagy <>2013-09-06 18:35:55 +0000
committerSzabolcs Nagy <>2013-09-06 18:35:55 +0000
commit9b0fcb441a44456c7b071c7cdaf90403f81ec05a (patch)
treeebb08b777b53c318dc8ba55cd2979a17689843d6 /src/math/__rem_pio2_large.c
parentf657fe4b9f734d7fdea515af8dffbf7c28ce4fbc (diff)
math: remove STRICT_ASSIGN macro
gcc did not always drop excess precision according to c99 at assignments before version 4.5 even if -std=c99 was requested which caused badly broken mathematical functions on i386 when FLT_EVAL_METHOD!=0 but STRICT_ASSIGN was not used consistently and it is worked around for old compilers with -ffloat-store so it is no longer needed the new convention is to get the compiler respect c99 semantics and when excess precision is not harmful use float_t or double_t or to specialize code using FLT_EVAL_METHOD
Diffstat (limited to 'src/math/__rem_pio2_large.c')
1 files changed, 2 insertions, 1 deletions
diff --git a/src/math/__rem_pio2_large.c b/src/math/__rem_pio2_large.c
index 27b619cc..bb2dc43f 100644
--- a/src/math/__rem_pio2_large.c
+++ b/src/math/__rem_pio2_large.c
@@ -415,7 +415,8 @@ recompute:
fw = 0.0;
for (i=jz; i>=0; i--)
fw += fq[i];
- STRICT_ASSIGN(double,fw,fw);
+ // TODO: drop excess precision here once double_t is used
+ fw = (double)fw;
y[0] = ih==0 ? fw : -fw;
fw = fq[0]-fw;
for (i=1; i<=jz; i++)