#if defined(__amd64__) || defined(__i386__)
static const volatile double
C1hi = 0.041666666666666664,
C1lo = 2.2598839032744733e-18,
S1hi = -0.16666666666666666,
S1lo = -9.2563760475949941e-18;
#define S1 ((long double)S1hi + S1lo)
#define C1 ((long double)C1hi + C1lo)
#else
static const long double
C1 = 0.0416666666666666666136L,
S1 = -0.166666666666666666671L;
#endif
static const double
C2 = -0.0013888888888888874,
C3 = 0.000024801587301571716,
C4 = -0.00000027557319215507120,
C5 = 0.0000000020876754400407278,
C6 = -1.1470297442401303e-11,
C7 = 4.7383039476436467e-14,
S2 = 0.0083333333333333332,
S3 = -0.00019841269841269427,
S4 = 0.0000027557319223597490,
S5 = -0.000000025052108218074604,
S6 = 1.6059006598854211e-10,
S7 = -7.6429779983024564e-13,
S8 = 2.6174587166648325e-15;
static inline void
__kernel_sincosl(long double x, long double y, int iy, long double *sn,
long double *cs)
{
long double hz, r, v, w, z;
z = x * x;
v = z * x;
r = S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * S8)))));
if (iy == 0)
*sn = x + v * (S1 + z * r);
else
*sn = x - ((z * (y / 2 - v * r) - y) - v * S1);
hz = z / 2;
w = 1 - hz;
r = z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 +
z * C7))))));
*cs = w + (((1 - w) - hz) + (z * r - x * y));
}