https://bugs.winehq.org/show_bug.cgi?id=49718
--- Comment #6 from Piotr Caban piotr.caban@gmail.com --- (In reply to Fabian Maurer from comment #5)
Does that mean the musl implementation is broken as well...?
Not really, it just returns different value that has reasonably small error (less than 1ULP). In this case musl implementation has bigger error though.
It's done this way in order to speed up calculation. It will be possible to implement it with better precision using architecture dependent code (otherwise the implementation will be too slow).
It's also interesting to take a look on values returned by acos. When native dll is used it will return different values depending if your processor supports SSE2 (you can also see it by calling _set_SSE2_enable(FALSE) function). Probably in this case native falls back to some kind of architecture independent code.