Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of dsp by
Cosine
[Fast Math Functions]
Computes the trigonometric cosine function using a combination of table lookup and cubic interpolation. More...
Functions | |
| float32_t | arm_cos_f32 (float32_t x) |
| Fast approximation to the trigonometric cosine function for floating-point data. | |
| q15_t | arm_cos_q15 (q15_t x) |
| Fast approximation to the trigonometric cosine function for Q15 data. | |
| q31_t | arm_cos_q31 (q31_t x) |
| Fast approximation to the trigonometric cosine function for Q31 data. | |
Variables | |
| static const float32_t | cosTable [259] |
| static const q15_t | cosTableQ15 [259] |
| static const q31_t | cosTableQ31 [259] |
Detailed Description
Computes the trigonometric cosine function using a combination of table lookup and cubic interpolation.
There are separate functions for Q15, Q31, and floating-point data types. The input to the floating-point version is in radians while the fixed-point Q15 and Q31 have a scaled input with the range [0 1) mapping to [0 2*pi).
The implementation is based on table lookup using 256 values together with cubic interpolation. The steps used are:
- Calculation of the nearest integer table index
- Fetch the four table values a, b, c, and d
- Compute the fractional portion (fract) of the table index.
- Calculation of wa, wb, wc, wd
- The final result equals
a*wa + b*wb + c*wc + d*wd
where
a=Table[index-1];
b=Table[index+0];
c=Table[index+1];
d=Table[index+2];
and
wa=-(1/6)*fract.^3 + (1/2)*fract.^2 - (1/3)*fract;
wb=(1/2)*fract.^3 - fract.^2 - (1/2)*fract + 1;
wc=-(1/2)*fract.^3+(1/2)*fract.^2+fract;
wd=(1/6)*fract.^3 - (1/6)*fract;
Function Documentation
| float32_t arm_cos_f32 | ( | float32_t | x ) |
Fast approximation to the trigonometric cosine function for floating-point data.
- Parameters:
-
[in] x input value in radians.
- Returns:
- cos(x).
Definition at line 189 of file arm_cos_f32.c.
| q15_t arm_cos_q15 | ( | q15_t | x ) |
Fast approximation to the trigonometric cosine function for Q15 data.
- Parameters:
-
[in] x Scaled input value in radians.
- Returns:
- cos(x).
The Q15 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).
Definition at line 102 of file arm_cos_q15.c.
| q31_t arm_cos_q31 | ( | q31_t | x ) |
Fast approximation to the trigonometric cosine function for Q31 data.
- Parameters:
-
[in] x Scaled input value in radians.
- Returns:
- cos(x).
The Q31 input value is in the range [0 +1) and is mapped to a radian value in the range [0 2*pi).
Definition at line 133 of file arm_cos_q31.c.
Variable Documentation
const float32_t cosTable[259] [static] |
- Example code for Generation of Cos Table: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++) { cosTable[n+1]= cos(2*pi*n/tableSize); }where pi value is 3.14159265358979
Definition at line 83 of file arm_cos_f32.c.
const q15_t cosTableQ15[259] [static] |
- Table Values are in Q15(1.15 Fixed point format) and generation is done in three steps
- First Generate cos values in floating point: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++) { cosTable[n+1]= cos(2*pi*n/tableSize); }where pi value is 3.14159265358979
- Secondly Convert Floating point to Q15(Fixed point): round(cosTable[i] * pow(2, 15))
- Finally Rounding to nearest integer is done cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
Definition at line 57 of file arm_cos_q15.c.
const q31_t cosTableQ31[259] [static] |
- Table Values are in Q31(1.31 Fixed point format) and generation is done in three steps First Generate cos values in floating point: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++) { cosTable[n+1]= cos(2*pi*n/tableSize); }where pi value is 3.14159265358979
- Secondly Convert Floating point to Q31(Fixed point): (cosTable[i] * pow(2, 31))
- Finally Rounding to nearest integer is done cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);
Definition at line 57 of file arm_cos_q31.c.
Generated on Tue Jul 12 2022 19:55:44 by
1.7.2
