CMSIS DSP Software Library: Cosine

Functions | Variables

# Cosine
[Fast Math Functions]

## Functions
float32_t | arm_cos_f32 (float32_t x)
q31_t | arm_cos_q31 (q31_t x)
q15_t | arm_cos_q15 (q15_t x)
## Variables
static const float32_t | cosTable [259]
static const q31_t | cosTableQ31 [259]
static const q15_t | cosTableQ15 [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:

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_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).

Examples:
  arm_sin_cos_example_f32.c.

Definition at line 192 of file arm_cos_f32.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 136 of file arm_cos_q31.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 105 of file arm_cos_q15.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 86 of file arm_cos_f32.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 60 of file arm_cos_q31.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): (cosTable[i] * pow(2, 15))

  Finally Rounding to nearest integer is done cosTable[i] += (cosTable[i] > 0 ? 0.5 :-0.5);

Definition at line 60 of file arm_cos_q15.c.

All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines