]> git.ipfire.org Git - thirdparty/glibc.git/commit
alpha: fix trunc for big input values
authorAurelien Jarno <aurelien@aurel32.net>
Tue, 2 Aug 2016 07:18:59 +0000 (09:18 +0200)
committerMike Frysinger <vapier@gentoo.org>
Thu, 8 Dec 2016 05:57:11 +0000 (00:57 -0500)
commite6eab16cc302e6c42f79e1af02ce98ebb9a783bc
tree9be4c6c5d45070a74a98b4f6835173c637a80969
parent8eb9a92e0522f2d4f2d4167df919d066c85d3408
alpha: fix trunc for big input values

The alpha specific version of trunc and truncf always add and subtract
0x1.0p23 or 0x1.0p52 even for big values. This causes this kind of
errors in the testsuite:

  Failure: Test: trunc_towardzero (0x1p107)
  Result:
   is:          1.6225927682921334e+32   0x1.fffffffffffffp+106
   should be:   1.6225927682921336e+32   0x1.0000000000000p+107
   difference:  1.8014398509481984e+16   0x1.0000000000000p+54
   ulp       :  0.5000
   max.ulp   :  0.0000

Change this by returning the input value when its absolute value is
greater than 0x1.0p23 or 0x1.0p52. NaN have to go through the add and
subtract operations to get possibly silenced.

Finally remove the code to handle inexact exception, trunc should never
generate such an exception.

Changelog:
* sysdeps/alpha/fpu/s_trunc.c (__trunc): Return the input value
when its absolute value is greater than 0x1.0p52.
[_IEEE_FP_INEXACT] Remove.
* sysdeps/alpha/fpu/s_truncf.c (__truncf): Return the input value
when its absolute value is greater than 0x1.0p23.
[_IEEE_FP_INEXACT] Remove.

(cherry picked from commit b74d259fe793499134eb743222cd8dd7c74a31ce)
ChangeLog
sysdeps/alpha/fpu/s_trunc.c
sysdeps/alpha/fpu/s_truncf.c