**diff options**

author | Szabolcs Nagy <nsz@port70.net> | 2013-09-06 18:35:55 +0000 |
---|---|---|

committer | Szabolcs Nagy <nsz@port70.net> | 2013-09-06 18:35:55 +0000 |

commit | 9b0fcb441a44456c7b071c7cdaf90403f81ec05a (patch) | |

tree | ebb08b777b53c318dc8ba55cd2979a17689843d6 /src/math/expm1.c | |

parent | f657fe4b9f734d7fdea515af8dffbf7c28ce4fbc (diff) | |

download | musl-9b0fcb441a44456c7b071c7cdaf90403f81ec05a.tar.gz |

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/expm1.c')

-rw-r--r-- | src/math/expm1.c | 2 |

1 files changed, 1 insertions, 1 deletions

diff --git a/src/math/expm1.c b/src/math/expm1.c index a7eb2c0b..ac1e61e4 100644 --- a/src/math/expm1.c +++ b/src/math/expm1.c @@ -155,7 +155,7 @@ double expm1(double x) hi = x - t*ln2_hi; /* t*ln2_hi is exact here */ lo = t*ln2_lo; } - STRICT_ASSIGN(double, x, hi - lo); + x = hi-lo; c = (hi-x)-lo; } else if (hx < 0x3c900000) { /* |x| < 2**-54, return x */ if (hx < 0x00100000) |