123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #include "cdefs-compat.h"
- #include "math_private.h"
- static const double
- one = 1.0;
- #if defined(__amd64__) || defined(__i386__)
- static const volatile double
- C1hi = 0.041666666666666664,
- C1lo = 2.2598839032744733e-18;
- #define C1 ((long double)C1hi + C1lo)
- #else
- static const long double
- C1 = 0.0416666666666666666136L;
- #endif
- static const double
- C2 = -0.0013888888888888874,
- C3 = 0.000024801587301571716,
- C4 = -0.00000027557319215507120,
- C5 = 0.0000000020876754400407278,
- C6 = -1.1470297442401303e-11,
- C7 = 4.7383039476436467e-14;
- DLLEXPORT long double
- __kernel_cosl(long double x, long double y)
- {
- long double hz,z,r,w;
- z = x*x;
- r = z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*C7))))));
- hz = 0.5*z;
- w = one-hz;
- return w + (((one-w)-hz) + (z*r-x*y));
- }
|