mirror of
https://git.musl-libc.org/git/musl
synced 2025-01-09 16:23:23 +03:00
math: avoid runtime conversions of floating-point constants
gcc-12 with -frounding-mode will do inexact constant conversions at runtime according to the runtime rounding mode. in the math library we want constants to be rounding mode independent so this patch fixes cases where new runtime conversions happen with gcc-12. fortunately this only affects two minor cases, the fix uses global initializers where rounding mode does not apply. after the patch the same amount of conversions happen with gcc-12 as with gcc-11.
This commit is contained in:
parent
f8bdc30482
commit
7c0c7a75ec
@ -2,8 +2,10 @@
|
||||
|
||||
// FIXME
|
||||
|
||||
static const float float_pi_2 = M_PI_2;
|
||||
|
||||
float complex cacosf(float complex z)
|
||||
{
|
||||
z = casinf(z);
|
||||
return CMPLXF((float)M_PI_2 - crealf(z), -cimagf(z));
|
||||
return CMPLXF(float_pi_2 - crealf(z), -cimagf(z));
|
||||
}
|
||||
|
@ -61,13 +61,15 @@ static const double DP1 = 3.140625;
|
||||
static const double DP2 = 9.67502593994140625E-4;
|
||||
static const double DP3 = 1.509957990978376432E-7;
|
||||
|
||||
static const float float_pi = M_PI;
|
||||
|
||||
static float _redupif(float xx)
|
||||
{
|
||||
float x, t;
|
||||
long i;
|
||||
|
||||
x = xx;
|
||||
t = x/(float)M_PI;
|
||||
t = x/float_pi;
|
||||
if (t >= 0.0f)
|
||||
t += 0.5f;
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user