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

Go to the source code of this file.

Functions

double cos (double x)

Function Documentation

double cos ( double  x)

Definition at line 46 of file s_cos.c.

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

Referenced by SDL_cos().

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