SDL  2.0
s_sin.c File Reference
#include "math_libm.h"
#include "math_private.h"
+ Include dependency graph for s_sin.c:

Go to the source code of this file.

Functions

double sin (double x)

Function Documentation

double sin ( double  x)

Definition at line 46 of file s_sin.c.

References __ieee754_rem_pio2(), __kernel_cos(), __kernel_sin(), and GET_HIGH_WORD.

Referenced by SDL_sin().

{
double y[2],z=0.0;
int32_t n, ix;
/* High word of x. */
/* |x| ~< pi/4 */
ix &= 0x7fffffff;
if(ix <= 0x3fe921fb) return __kernel_sin(x,z,0);
/* sin(Inf or NaN) is NaN */
else if (ix>=0x7ff00000) return x-x;
/* argument reduction needed */
else {
switch(n&3) {
case 0: return __kernel_sin(y[0],y[1],1);
case 1: return __kernel_cos(y[0],y[1]);
case 2: return -__kernel_sin(y[0],y[1],1);
default:
return -__kernel_cos(y[0],y[1]);
}
}
}