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

◆ sin()

double sin ( double  x)

Definition at line 46 of file s_sin.c.

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

Referenced by SDL_sin().

47 {
48  double y[2],z=0.0;
49  int32_t n, ix;
50 
51  /* High word of x. */
52  GET_HIGH_WORD(ix,x);
53 
54  /* |x| ~< pi/4 */
55  ix &= 0x7fffffff;
56  if(ix <= 0x3fe921fb) return __kernel_sin(x,z,0);
57 
58  /* sin(Inf or NaN) is NaN */
59  else if (ix>=0x7ff00000) return x-x;
60 
61  /* argument reduction needed */
62  else {
63  n = __ieee754_rem_pio2(x,y);
64  switch(n&3) {
65  case 0: return __kernel_sin(y[0],y[1],1);
66  case 1: return __kernel_cos(y[0],y[1]);
67  case 2: return -__kernel_sin(y[0],y[1],1);
68  default:
69  return -__kernel_cos(y[0],y[1]);
70  }
71  }
72 }
#define GET_HIGH_WORD(i, d)
Definition: math_private.h:108
GLdouble GLdouble z
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1574
signed int int32_t
int32_t attribute_hidden __ieee754_rem_pio2(double x, double *y)
Definition: e_rem_pio2.c:69
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1574
double attribute_hidden __kernel_sin(double x, double y, int iy)
Definition: k_sin.c:52
GLdouble n
double attribute_hidden __kernel_cos(double x, double y)
Definition: k_cos.c:59