fix excess precision in return value of i386 atan[2][f]
authorRich Felker <dalias@aerifal.cx>
Thu, 6 Feb 2020 16:34:54 +0000 (11:34 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 6 Feb 2020 18:18:00 +0000 (13:18 -0500)
commit1c9afd69051a64cf085c6fb3674a444ff9a43857
treecf65884fe30ea7acb77644e07ce41997067e29bf
parentb4712ba445a5cb589d1ac37785c29164cd3cf1f9
fix excess precision in return value of i386 atan[2][f]

for functions implemented in C, this is a requirement of C11 (F.6);
strictly speaking that text does not apply to standard library
functions, but it seems to be intended to apply to them, and C2x is
expected to make it a requirement.

failure to drop excess precision is particularly bad for inverse trig
functions, where a value with excess precision can be outside the
range of the function (entire range, or range for a particular
subdomain), breaking reasonable invariants a caller may expect.
src/math/i386/atan.s
src/math/i386/atan2.s
src/math/i386/atan2f.s
src/math/i386/atanf.s