Advertisement
Guest User

Untitled

a guest
Apr 26th, 2015
223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. q15_t arm_sin_q15(q15_t x)
  2. {
  3. q15_t sinVal; /* Temporary variables for input, output */
  4. int32_t index; /* Index variables */
  5. q15_t a, b; /* Four nearest output values */
  6. q15_t fract; /* Temporary values for fractional values */
  7.  
  8. /* Calculate the nearest index */
  9. index = (uint32_t)x >> FAST_MATH_Q15_SHIFT;
  10.  
  11. /* Calculation of fractional value */
  12. fract = (x - (index << FAST_MATH_Q15_SHIFT)) << 9;
  13.  
  14. /* Read two nearest values of input value from the sin table */
  15. a = sinTable_q15[index];
  16. b = sinTable_q15[index+1];
  17.  
  18. /* Linear interpolation process */
  19. sinVal = (q31_t)(0x8000-fract)*a >> 16;
  20. sinVal = (q15_t)((((q31_t)sinVal << 16) + ((q31_t)fract*b)) >> 16);
  21.  
  22. return sinVal << 1;
  23. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement