Poor accuracy of `cos` just below pi with Double64
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 DomainErrors 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)

fixed
@JeffreySarnoff I just installed main in a fresh project and got essentially the same result:
For reference, here's the complete reproducer for the plot above:
using Pkg
Pkg.activate(; temp=true)
Pkg.add(url="https://github.com/JuliaMath/DoubleFloats.jl#main")
Pkg.add("PythonPlot")
using PythonPlot
using DoubleFloats
T = Double64
x = LinRange(T(π)-T(5e-16), T(π)+T(5e-16), 10_000)
y = cos.(x)
plot(x.-pi, y.+1)
axhline(0, c="black")
xlabel(raw"$\theta - \pi$")
ylabel(raw"$\cos\theta + 1$")
ok reopening