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

| libm_hidden_proto (sin)

## Function Documentation

libm_hidden_proto | ( | sin |  | ) |

Definition at line 52 of file s_sin.c.

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

{
double y[2], z = 0.0;
int32_t n, ix;
/* High word of x. */
GET_HIGH_WORD(ix, 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 {
n = __ieee754_rem_pio2(x, y);
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]);
}
}
}
__ieee754_rem_pio2
int32_t attribute_hidden __ieee754_rem_pio2(double x, y)
Definition: e_rem_pio2.c:94
GET_HIGH_WORD
#define GET_HIGH_WORD(i, d)
Definition: math_private.h:103
n
GLdouble n
Definition: SDL_opengl_glext.h:1952
int32_t
signed int int32_t
Definition: SDL_config_windows.h:61
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1567
y
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1567
__kernel_sin
double attribute_hidden __kernel_sin(double x, double y, int iy)
Definition: k_sin.c:67
z
GLdouble GLdouble z
Definition: SDL_opengl_glext.h:404
__kernel_cos
double attribute_hidden __kernel_cos(double x, double y)
Definition: k_cos.c:74