|
|
1.1 ! root 1: /* ! 2: * libm/sin.c ! 3: * Evaluate the sine function. ! 4: */ ! 5: ! 6: #include <math.h> ! 7: ! 8: #if EMU87 ! 9: #include "emumath.h" ! 10: #endif ! 11: ! 12: #define THRESHOLD 1.111111111111111111e-3 ! 13: ! 14: /* ! 15: * When |x| is very small, use the series ! 16: * x - x**3 / 6 + x**5 / 120 - ... ! 17: * to get an accurate result while avoiding loss of precision. ! 18: * The THRESHOLD value above is determined empirically. ! 19: */ ! 20: static readonly double sintab[] ={ ! 21: 0.000000000000000000000000, ! 22: 1.000000000000000000000000, ! 23: 0.000000000000000000000000, ! 24: -0.166666666666666666666666, ! 25: 0.000000000000000000000000, ! 26: 0.008333333333333333333333 ! 27: }; ! 28: ! 29: double ! 30: sin(x) double x; ! 31: { ! 32: if (fabs(x) < THRESHOLD) ! 33: return _pol(x, sintab, 6); ! 34: return cos(PI/2.0 - x); ! 35: } ! 36: ! 37: /* end of sin.c */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.