[ep-processor-libraries/dsplib.git] / ti / dsplib / src / DSPF_sp_fircirc / c674 / DSPF_sp_fircirc_cn.c
1 /* ======================================================================= */
2 /* DSP_fircirc_cn.c -- Circular FIR Filter */
3 /* Natural C Implementation */
4 /* */
5 /* Rev 0.0.2 */
6 /* */
7 /* Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/ */
8 /* */
9 /* */
10 /* Redistribution and use in source and binary forms, with or without */
11 /* modification, are permitted provided that the following conditions */
12 /* are met: */
13 /* */
14 /* Redistributions of source code must retain the above copyright */
15 /* notice, this list of conditions and the following disclaimer. */
16 /* */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in the */
19 /* documentation and/or other materials provided with the */
20 /* distribution. */
21 /* */
22 /* Neither the name of Texas Instruments Incorporated nor the names of */
23 /* its contributors may be used to endorse or promote products derived */
24 /* from this software without specific prior written permission. */
25 /* */
26 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
27 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
28 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR */
29 /* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
30 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
31 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
32 /* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, */
33 /* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY */
34 /* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
35 /* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */
36 /* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
37 /* */
38 /* ======================================================================= */
40 #pragma CODE_SECTION(DSPF_sp_fircirc_cn, ".text:ansi");
42 #include "DSPF_sp_fircirc_cn.h"
44 void DSPF_sp_fircirc_cn(const float *x, float *h, float *restrict y,
45 int index, int csize, int nh, int ny)
46 {
47 /* Circular Buffer block size = ((2^(csize + 1)) / 4) */
48 int i, j, mod = (1 << (csize - 1));
49 float sum;
51 for (i = 0; i < ny; i++)
52 {
53 sum = 0;
55 for (j = 0; j < nh; j++)
56 {
57 /* Operation "% mod" is equivalent to "& (mod -1)" */
58 /* sum += x[(i + j + index) % mod] * h[j]; */
59 sum += x[(i + j + index) & (mod - 1)] * h[j];
60 }
62 y[i] = sum;
63 }
64 }
66 /* ======================================================================= */
67 /* End of file: DSPF_sp_fircirc_cn.c */
68 /* ----------------------------------------------------------------------- */
69 /* Copyright (c) 2011 Texas Instruments, Incorporated. */
70 /* All Rights Reserved. */
71 /* ======================================================================= */