-
Notifications
You must be signed in to change notification settings - Fork 31
Description
For values close to — but just below — pi, the result of cos
is quite jittery and significantly less accurate than values just above pi. I actually don't understand how the latter are so accurate; it would be nice if the former could be so accurate as well. But the real problem is that the values just below pi actually exceed the bounds [-1,1] that one expects for cos
. This causes me various DomainError
s down the line in tests that pass with Julia's built-in float types.
Looking at the code, it seems like this line is the relevant path. And from that I find very similar behavior for sin
just below (but not above) pi/2. I wonder if more branches with qrtrpi
and threeqrtrpi
(using corresponding symmetries) would be better for these cases.
T = Double64
x = LinRange(T(π)-T(5e-16), T(π)+T(5e-16), 10_000)
y = cos.(x)