Functions |
void | arm_sin_cos_f32 (float32_t theta, float32_t *pSinVal, float32_t *pCosVal) |
| Floating-point sin_cos function.
|
void | arm_sin_cos_q31 (q31_t theta, q31_t *pSinVal, q31_t *pCosVal) |
| Q31 sin_cos function.
|
Description
Computes the trigonometric sine and cosine values using a combination of table lookup and linear interpolation. There are separate functions for Q31 and floating-point data types. The input to the floating-point version is in degrees while the fixed-point Q31 have a scaled input with the range [-1 1) mapping to [-180 180) degrees.
The implementation is based on table lookup using 360 values together with linear interpolation. The steps used are:
- Calculation of the nearest integer table index.
- Compute the fractional portion (fract) of the input.
- Fetch the value corresponding to
index
from sine table to y0
and also value from index+1
to y1
.
- Sine value is computed as
*psinVal = y0 + (fract * (y1 - y0))
.
- Fetch the value corresponding to
index
from cosine table to y0
and also value from index+1
to y1
.
- Cosine value is computed as
*pcosVal = y0 + (fract * (y1 - y0))
.
Function Documentation
void arm_sin_cos_f32 |
( |
float32_t |
theta, |
|
|
float32_t * |
pSinVal, |
|
|
float32_t * |
pCosVal |
|
) |
| |
- Parameters:
-
[in] | theta | input value in degrees |
[out] | *pSinVal | points to the processed sine output. |
[out] | *pCosVal | points to the processed cos output. |
- Returns:
- none.
void arm_sin_cos_q31 |
( |
q31_t |
theta, |
|
|
q31_t * |
pSinVal, |
|
|
q31_t * |
pCosVal |
|
) |
| |
- Parameters:
-
[in] | theta | scaled input value in degrees |
[out] | *pSinVal | points to the processed sine output. |
[out] | *pCosVal | points to the processed cosine output. |
- Returns:
- none.
The Q31 input value is in the range [-1 +1) and is mapped to a degree value in the range [-180 180).