b21ccf63f2
As a component of atan2(y, x), the case of x == 1.0 is farmed out to atan(y). The current implementation of this comparison is vulnerable to signed integer underflow (that is, undefined behavior), and it's performed in a somewhat more complicated way than it need be. Change it to not be quite so cute, rather directly comparing the high/low bits of x to the specific IEEE-754 bit pattern that encodes 1.0. Note that while there are three different e_atan* files in the relevant directory, only this one needs fixing. e_atan2f.c already compares against the full bit pattern encoding 1.0f, while e_atan2l.cuses bitwise-ands/ors/nots and so doesn't require a change. Closes #130 Submitted by: Jeff Walden (@jswalden github PR #130) Reviewed by: bde MFC After: 1 month |
||
---|---|---|
.. | ||
aarch64 | ||
amd64 | ||
arm | ||
bsdsrc | ||
i387 | ||
ld80 | ||
ld128 | ||
man | ||
mips | ||
powerpc | ||
riscv | ||
sparc64 | ||
src | ||
tests | ||
x86 | ||
Makefile | ||
Makefile.depend | ||
Symbol.map |