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
This commit is contained in:
Szabolcs Nagy
2013-09-06 18:35:55 +00:00
parent f657fe4b9f
commit 9b0fcb441a
11 changed files with 13 additions and 23 deletions

View File

@ -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++)