On Thu, Jul 03, 2025 at 02:43:43PM +0200, Michael Matz wrote: > Hello, > > On Thu, 3 Jul 2025, Yuao Ma wrote: > > > This patch adds the required function for Fortran trigonometric functions to > > work with glibc versions prior to 2.26. It's based on glibc source commit > > 632d895f3e5d98162f77b9c3c1da4ec19968b671. > > > > I've built it successfully on my end. Documentation is also included. > > > > Please take a look when you have a moment. > > +__float128 > +cospiq (__float128 x) > +{ > ... > + if (__builtin_islessequal (x, 0.25Q)) > + return cosq (M_PIq * x); > > Isn't the whole raison d'etre for the trig-pi functions that the internal > argument reduction against multiples of pi becomes trivial and hence (a) > performant, and (b) doesn't introduce rounding artifacts? Expressing the > trig-pi functions in terms of their counterparts completely defeats this > purpose. The other way around would be more sensible for the cases where > it works, but the above doesn't seem very attractive. >
It's more than just easier range reduction. There are special cases that give exact results. For example, if x is integer, then sinpi(x) = +-0, exactly. It's also telling when looking at reported accuracy https://members.loria.fr/PZimmermann/papers/accuracy.pdf -- Steve