math: Fix asin and acos invalid exception with old gcc
commit7363a9a9a097c455a7ddb9386b4c6f7bdf91065f
authorSzabolcs Nagy <szabolcs.nagy@arm.com>
Thu, 13 Oct 2022 10:10:10 +0000 (13 11:10 +0100)
committerSzabolcs Nagy <szabolcs.nagy@arm.com>
Mon, 17 Oct 2022 07:18:52 +0000 (17 08:18 +0100)
tree8e11dcf8264bf1760830c82a0c086e828d8cab8b
parentbe066536bd313f1eec6e36fb92a96d39bf76f483
math: Fix asin and acos invalid exception with old gcc

This works around a gcc issue where it const folded inf/inf into nan,
preventing the invalid exception to be signalled.

(x-x)/(x-x) is more robust against optimizations and works for all
out of bounds values including x==nan.

The gcc issue https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95115
should be fixed on release branches starting from gcc-10, but it is
better to change the code in case glibc is built with older gcc.

Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
sysdeps/ieee754/dbl-64/e_asin.c