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

 libm_hidden_proto (sin)
 

Function Documentation

§ libm_hidden_proto()

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.

59 {
60  double y[2], z = 0.0;
61  int32_t n, ix;
62 
63  /* High word of x. */
64  GET_HIGH_WORD(ix, x);
65 
66  /* |x| ~< pi/4 */
67  ix &= 0x7fffffff;
68  if (ix <= 0x3fe921fb)
69  return __kernel_sin(x, z, 0);
70 
71  /* sin(Inf or NaN) is NaN */
72  else if (ix >= 0x7ff00000)
73  return x - x;
74 
75  /* argument reduction needed */
76  else {
77  n = __ieee754_rem_pio2(x, y);
78  switch (n & 3) {
79  case 0:
80  return __kernel_sin(y[0], y[1], 1);
81  case 1:
82  return __kernel_cos(y[0], y[1]);
83  case 2:
84  return -__kernel_sin(y[0], y[1], 1);
85  default:
86  return -__kernel_cos(y[0], y[1]);
87  }
88  }
89 }
int32_t attribute_hidden __ieee754_rem_pio2(double x, y)
Definition: e_rem_pio2.c:94
#define GET_HIGH_WORD(i, d)
Definition: math_private.h:103
GLdouble n
signed int int32_t
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1567
GLint GLint GLint GLint GLint GLint y
Definition: SDL_opengl.h:1567
double attribute_hidden __kernel_sin(double x, double y, int iy)
Definition: k_sin.c:67
GLdouble GLdouble z
double attribute_hidden __kernel_cos(double x, double y)
Definition: k_cos.c:74