https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116299
--- Comment #4 from Ryan <rmaguire314 at gmail dot com> ---
Ah, sure here you go.
Output of gcc -v:
gcc version 12.2.0 (Debian 12.2.0-14)
Target: powerpc64le-linux-gnu
Thread model: posix
Output of uname -a:
Linux Ryans-CotG 6.1.0-23-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.99-1
(2024-07-15) ppc64le GNU/Linux
Emulated via deboostrap + chroot.
Preprocessed code.
With volatile: Peak relative error = 5x10^-32
Without volatile: Peak relative error = 10^-12
Quite a difference.
extern void
tmpl_LDouble_SinCosPi(long double t, long double *sin_t, long double *cos_t);
static inline
long double tmpl_LDouble_Normalized_Fresnel_Cos_Asymptotic(long double x)
{
volatile const double x_double = (double)x;
volatile const double split = x_double*3.4359738369E+10;
volatile const double xhi_double = split - (split - x_double);
const long double xhi = (long double)xhi_double;
const long double xlo = x - xhi;
const long double t = 1.0L /
(3.14159265358979323846264338327950288419716939L*x);
long double sin_hi, cos_hi, sin_lo, cos_lo, sin_x;
tmpl_LDouble_SinCosPi(xlo * xhi, &sin_hi, &cos_hi);
tmpl_LDouble_SinCosPi(0.5L * xlo * xlo, &sin_lo, &cos_lo);
sin_x = cos_hi*sin_lo + cos_lo*sin_hi;
return 0.5L + t * sin_x;
}