1
0
mirror of https://github.com/wine-mirror/wine synced 2024-07-09 04:16:08 +00:00

msvcrt: Use the __cosdf() implementation from the bundled musl library.

With the changes from 9008cd2f24.
This commit is contained in:
Alexandre Julliard 2023-03-30 13:37:39 +02:00
parent b46bf3ffb1
commit 90c61c7cd2
2 changed files with 10 additions and 25 deletions

View File

@ -220,22 +220,7 @@ float CDECL _chgsignf( float num )
#ifndef __i386__
extern float __sindf(double x);
/* Copied from musl: src/math/__cosdf.c */
static float __cosdf(double x)
{
static const double C0 = -0x1.0000000000000p-1,
C1 = 0x1.5555555555555p-5,
C2 = -0x1.6c16c16c16c17p-10,
C3 = 0x1.a01a01a01a01ap-16,
C4 = -0x1.27e4fb7789f5cp-22;
double z;
z = x * x;
if (x > -7.8163146972656250e-03 && x < 7.8163146972656250e-03)
return 1 + C0 * z;
return 1.0 + z * (C0 + z * (C1 + z * (C2 + z * (C3 + z * C4))));
}
extern float __cosdf(double x);
static const UINT64 exp2f_T[] = {
0x3ff0000000000000ULL, 0x3fefd9b0d3158574ULL, 0x3fefb5586cf9890fULL, 0x3fef9301d0125b51ULL,

View File

@ -18,18 +18,18 @@
/* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
static const double
C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
C1 = 0x155553e1053a42.0p-57, /* 0.0416666233237390631894 */
C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
C3 = 0x199342e0ee5069.0p-68; /* 0.0000243904487962774090654 */
C0 = -0x1.0000000000000p-1,
C1 = 0x1.5555555555555p-5,
C2 = -0x1.6c16c16c16c17p-10,
C3 = 0x1.a01a01a01a01ap-16,
C4 = -0x1.27e4fb7789f5cp-22;
float __cosdf(double x)
{
double_t r, w, z;
double_t z;
/* Try to optimize for parallel evaluation as in __tandf.c. */
z = x*x;
w = z*z;
r = C2+z*C3;
return ((1.0+z*C0) + w*C1) + (w*z)*r;
if (x > -7.8163146972656250e-03 && x < 7.8163146972656250e-03)
return 1 + C0 * z;
return 1.0 + z * (C0 + z * (C1 + z * (C2 + z * (C3 + z * C4))));
}