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 0.9999] mapping to [-180 179] 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)).
- 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.
References cosTable, and sinTable.
- 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 0.999999] and is mapped to a degree value in the range [-180 179].
References cosTableQ31, INPUT_SPACING, and sinTableQ31.
- Cosine Table is generated from following loop
for(i = 0; i < 360; i++)
{
cosTable[i]= cos((i-180) * PI/180.0);
}
Referenced by arm_sin_cos_f32().
| const int32_t cosTableQ31[360] |
|
static |
- Cosine Table is generated from following loop
for(i = 0; i < 360; i++)
{
cosTable[i]= cos((i-180) * PI/180.0);
}
- Convert above coefficients to fixed point 1.31 format.
Referenced by arm_sin_cos_q31().
- Sine Table is generated from following loop
for(i = 0; i < 360; i++)
{
sinTable[i]= sin((i-180) * PI/180.0);
}
Referenced by arm_sin_cos_f32().
| const int32_t sinTableQ31[360] |
|
static |
- Sine Table is generated from following loop
for(i = 0; i < 360; i++)
{
sinTable[i]= sin((i-180) * PI/180.0);
} Convert above coefficients to fixed point 1.31 format.
Referenced by arm_sin_cos_q31().