Functions | Variables

Sine
[Fast Math Functions]

Functions

float32_t arm_sin_f32 (float32_t x)
q31_t arm_sin_q31 (q31_t x)
q15_t arm_sin_q15 (q15_t x)

Variables

static const float32_t sinTable [259]
static const q31_t sinTableQ31 [259]
static const q15_t sinTableQ15 [259]

Detailed Description

Computes the trigonometric sine 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:

  1. Calculation of the nearest integer table index
  2. Fetch the four table values a, b, c, and d
  3. Compute the fractional portion (fract) of the table index.
  4. Calculation of wa, wb, wc, wd
  5. 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_sin_f32 ( float32_t  x )

Fast approximation to the trigonometric sine function for floating-point data.

Parameters:
[in]xinput value in radians.
Returns:
sin(x).
Examples:
arm_sin_cos_example_f32.c.

Definition at line 189 of file arm_sin_f32.c.

q31_t arm_sin_q31 ( q31_t  x )

Fast approximation to the trigonometric sine function for Q31 data.

Parameters:
[in]xScaled input value in radians.
Returns:
sin(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 130 of file arm_sin_q31.c.

q15_t arm_sin_q15 ( q15_t  x )

Fast approximation to the trigonometric sine function for Q15 data.

Parameters:
[in]xScaled input value in radians.
Returns:
sin(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 100 of file arm_sin_q15.c.


Variable Documentation

const float32_t sinTable[259] [static]
Example code for Generation of Floating-point Sin Table: tableSize = 256;
for(n = -1; n < (tableSize + 1); n++)      
 {      
	sinTable[n+1]=sin(2*pi*n/tableSize);      
 }
where pi value is 3.14159265358979

Definition at line 82 of file arm_sin_f32.c.

const q31_t sinTableQ31[259] [static]
Tables generated are in Q31(1.31 Fixed point format) Generation of sin values in floating point:
tableSize = 256;        
 for(n = -1; n < (tableSize + 1); n++)      
 {      
	sinTable[n+1]= sin(2*pi*n/tableSize);      
 } 
where pi value is 3.14159265358979
Convert Floating point to Q31(Fixed point): (sinTable[i] * pow(2, 31))
rounding to nearest integer is done sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);

Definition at line 53 of file arm_sin_q31.c.

const q15_t sinTableQ15[259] [static]
Example code for Generation of Q15 Sin Table:
tableSize = 256;      
 for(n = -1; n < (tableSize + 1); n++)      
 {      
	sinTable[n+1]=sin(2*pi*n/tableSize);      
 } 
where pi value is 3.14159265358979
Convert Floating point to Q15(Fixed point): (sinTable[i] * pow(2, 15))
rounding to nearest integer is done sinTable[i] += (sinTable[i] > 0 ? 0.5 :-0.5);

Definition at line 55 of file arm_sin_q15.c.

 All Data Structures Files Functions Variables Enumerations Enumerator Defines