1 /* ======================================================================= */
2 /* DSP_ifft16x32.h -- 16x32 Mixed Radix Inverse FFT */
3 /* Intrinsic C Implementation */
4 /* */
5 /* Rev 0.0.1 */
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 #ifndef DSP_IFFT16X32_H_
41 #define DSP_IFFT16X32_H_ 1
43 #ifndef __TI_COMPILER_VERSION__ // for non TI compiler
44 #include "assert.h" // intrinsics prototypes
45 #include "C6xSimulator.h" // intrinsics prototypes
46 #include "C6xSimulator_type_modifiers.h" // define/undefine typing keywords
47 #endif
49 /** @ingroup FFT */
50 /* @{ */
52 /** @defgroup DSP_ifft16x32 */
53 /** @ingroup DSP_ifft16x32 */
54 /* @{ */
56 /**
57 * This routine computes an extended precision complex
58 * inverse mixed radix FFT with rounding and digit reversal.
59 * Input data x[ ] and output data y[ ] are 32-bit, coefficients
60 * w[ ] are 16-bit. The output is returned in the separate array
61 * y[ ] in normal order. Each complex value is stored with
62 * interleaved real and imaginary parts.
63 *
64 * @param ptr_w = input twiddle factors
65 * @param npoints = number of points
66 * @param ptr_x = transformed data reversed
67 * @param ptr_y = linear transformed data
68 *
69 * @par Algorithm:
70 * DSP_ifft16x32_cn.c is the natural C equivalent of the optimized intrinsic C code without
71 * restrictions. Note that the intrinsic C code is optimized and restrictions may
72 * apply.
73 *
74 * @par Assumptions:
75 * In-place computation is not allowed. <BR>
76 * Size of FFT, nx, must be power of 2 and 16<=nx<=65536. <BR>
77 * The arrays for the complex input data x[], complex output data y[]
78 * and twiddle factor w[] must be double word aligned. <BR>
79 * The input and output data are complex, with the real/imaginary
80 * components stored in adjacent locations in the array. The real
81 * components are stored at even array indices, and the imaginary
82 * components are stored at odd array indices. <BR>
83 *
84 * @par Implementation Notes:
85 * @b Endian Support:
86 * The intrinsic optimized C code supports both big and little endian modes. <BR>
87 * The linear assembly code supports little endian mode only. <BR>
88 * @b Interruptibility: The code is interruptible. <BR>
89 *
90 */
92 void DSP_ifft16x32 (
93 const short * restrict ptr_w,
94 int npoints,
95 int * restrict ptr_x,
96 int * restrict ptr_y
97 );
99 #endif
101 /* ======================================================================== */
102 /* End of file: DSP_ifft16x32.h */
103 /* ------------------------------------------------------------------------ */
104 /* Copyright (c) 2011 Texas Instruments, Incorporated. */
105 /* All Rights Reserved. */
106 /* ======================================================================== */