op_kfix_cos.c File Reference


Detailed Description

16-bit and 32-bit fixed-point cosine kernel functions or the AVR32 UC3

Author:
Atmel Corporation: http://www.atmel.com
Support and FAQ: http://support.atmel.no/

Definition in file op_kfix_cos.c.

#include "dsp.h"

Go to the source code of this file.

Functions

dsp16_t dsp16_op_kernel_cosfix (dsp16_t angle)
dsp32_t dsp32_op_kernel_cosfix (dsp32_t angle)


Function Documentation

dsp16_t dsp16_op_kernel_cosfix ( dsp16_t  angle  ) 

Definition at line 49 of file op_kfix_cos.c.

References DSP16_Q, and DSP16_QB.

Referenced by dsp16_op_sin().

00050 {
00051   // Coefficients of the 4th order Tchebychev polynom to calculate a cosine.
00052   const dsp16_t c0 = DSP16_Q(1.);
00053   const dsp16_t c2 = DSP16_Q(0.61651611328125);
00054   const dsp16_t c4 = DSP16_Q(0.1231689453125);
00055   S32 z, suma;
00056 
00057   // Computation of the polynom
00058   z = (angle*angle) >> (DSP16_QB - 3);
00059   suma = c2 - ((z*c4) >> (DSP16_QB + 1));
00060 
00061   return (c0 - ((z*suma) >> DSP16_QB));
00062 }

dsp32_t dsp32_op_kernel_cosfix ( dsp32_t  angle  ) 

Definition at line 65 of file op_kfix_cos.c.

References DSP32_Q, and DSP32_QB.

Referenced by dsp32_op_sin().

00066 {
00067   // Coefficients of the 12th order Tchebychev polynom to calculate a cosine.
00068   const dsp32_t one = DSP32_Q(1.);
00069   const dsp32_t half = DSP32_Q(0.61685027507);    //0.5*(pi^2/8);
00070   const dsp32_t C1 = DSP32_Q(0.50733903092);      //(4.1666667908e-02*pi^2)*(pi^2/8);
00071   const dsp32_t C2 = DSP32_Q(-0.16690785015);     //(-1.3888889225e-03*pi^4)*(pi^2/8);
00072   const dsp32_t C3 = DSP32_Q(0.02941632920);      //(2.4801587642e-05*pi^6)*(pi^2/8);
00073   const dsp32_t C4 = DSP32_Q(-0.00322586085);     //(-2.7557314297e-07*pi^8)*(pi^2/8);
00074   const dsp32_t C5 = DSP32_Q(0.00024118485);      //(2.0875723372e-09*pi^10)*(pi^2/8);
00075   const dsp32_t C6 = DSP32_Q(-0.00001295308);     //(-1.1359647598e-11*pi^12)*(pi^2/8);
00076   long long z, suma, produ;
00077 
00078   // Computation of the polynom
00079   z = (long long) angle;
00080   z = (z*z) >> DSP32_QB;
00081 
00082   produ = (z*C6) >> DSP32_QB;
00083 
00084   suma = C5 + produ;
00085   produ = (z*suma) >> DSP32_QB;
00086   suma = C4 + produ;
00087   produ = (z*suma) >> DSP32_QB;
00088   suma = C3 + produ;
00089   produ = (z*suma) >> DSP32_QB;
00090   suma = C2 + produ;
00091   produ = (z*suma) >> DSP32_QB;
00092   suma = C1 + produ;
00093   produ = (z*suma) >> DSP32_QB;
00094   produ = z*produ;
00095 
00096   return (one - (((half*z - produ)) >> (DSP32_QB - 3)));
00097 }


Generated on Fri Feb 19 02:23:20 2010 for AVR32 UC3 - EVK1104 DSPLib Demo Documentation by  doxygen 1.5.5