Numpy has a test failure where `np.tan(np.inf)` is not raising "invalid". The bug is due to an underlying bug in Apple's Libm. The bug is only present on arm64 and does not affect x86_64.
The changes here apply to sin, cos, and tan. If the input is a non-finite value, then return `(x - x)`, which will raise "invalid" for `x=INFINITY` as well as return `NAN` for both `INFINITY` and `NAN` as input.
Testing:
(Note, the testing below is on top of another branch that fixes divide-by-zero failures in reciprocal)
Before change:
```
FAILED numpy/core/tests/test_umath.py::TestSpecialFloats::test_tan - AssertionError: FloatingPointError not raised by tan
1 failed, 15589 passed, 302 skipped, 1268 deselected, 31 xfailed, 3 xpassed in 70.99s (0:01:10)
```
After change:
```
15590 passed, 302 skipped, 1268 deselected, 31 xfailed, 3 xpassed in 71.38s (0:01:11)
```
Backport of #19974.
Numpy has a test failure where np.tan(np.inf) is not raising "invalid". The bug is due to an underlying bug in Apple's Libm. The bug is only present on arm64 and does not affect x86_64.
The changes here apply to sin, cos, and tan. If the input is a non-finite value, then return (x - x), which will raise "invalid" for x=INFINITY as well as return NAN for both INFINITY and NAN as input.
Testing:
(Note, the testing below is on top of another branch that fixes divide-by-zero failures in reciprocal)
Before change:
After change: