|
|
|
|
@ -78,11 +78,6 @@ float32_t arm_sin_f32(
|
|
|
|
|
int32_t n;
|
|
|
|
|
float32_t findex;
|
|
|
|
|
|
|
|
|
|
/* Special case for small negative inputs */
|
|
|
|
|
if ((x < 0.0f) && (x >= -1.9e-7f)) {
|
|
|
|
|
return x;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* input x is in radians */
|
|
|
|
|
/* Scale the input to [0 1] range from [0 2*PI] , divide input by 2*pi */
|
|
|
|
|
in = x * 0.159154943092f;
|
|
|
|
|
@ -100,9 +95,14 @@ float32_t arm_sin_f32(
|
|
|
|
|
in = in - (float32_t) n;
|
|
|
|
|
|
|
|
|
|
/* Calculation of index of the table */
|
|
|
|
|
findex = (float32_t) FAST_MATH_TABLE_SIZE * in;
|
|
|
|
|
findex = (float32_t)FAST_MATH_TABLE_SIZE * in;
|
|
|
|
|
index = (uint16_t)findex;
|
|
|
|
|
|
|
|
|
|
index = ((uint16_t)findex) & 0x1ff;
|
|
|
|
|
/* when "in" is exactly 1, we need to rotate the index down to 0 */
|
|
|
|
|
if (index >= FAST_MATH_TABLE_SIZE) {
|
|
|
|
|
index = 0;
|
|
|
|
|
findex -= (float32_t)FAST_MATH_TABLE_SIZE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* fractional value calculation */
|
|
|
|
|
fract = findex - (float32_t) index;
|
|
|
|
|
|