1 /*
2  *  Copyright (c) 2003-2004, Mark Borgerding. All rights reserved.
3  *  This file is part of KISS FFT - https://github.com/mborgerding/kissfft
4  *
5  *  SPDX-License-Identifier: BSD-3-Clause
6  *  See COPYING file for more information.
7  */
8 
9 #ifndef KISS_FTR_H
10 #define KISS_FTR_H
11 
12 #include "kiss_fft.h"
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 
18 /*
19 
20  Real optimized version can save about 45% cpu time vs. complex fft of a real seq.
21 
22 
23 
24  */
25 
26 typedef struct kiss_fftr_state *kiss_fftr_cfg;
27 
28 
29 kiss_fftr_cfg kiss_fftr_alloc(int nfft,int inverse_fft,void * mem, size_t * lenmem);
30 /*
31  nfft must be even
32 
33  If you don't care to allocate space, use mem = lenmem = NULL
34 */
35 
36 
37 void kiss_fftr(kiss_fftr_cfg cfg,const kiss_fft_scalar *timedata,kiss_fft_cpx *freqdata);
38 /*
39  input timedata has nfft scalar points
40  output freqdata has nfft/2+1 complex points
41 */
42 
43 void kiss_fftri(kiss_fftr_cfg cfg,const kiss_fft_cpx *freqdata,kiss_fft_scalar *timedata);
44 /*
45  input freqdata has  nfft/2+1 complex points
46  output timedata has nfft scalar points
47 */
48 
49 #define kiss_fftr_free KISS_FFT_FREE
50 
51 #ifdef __cplusplus
52 }
53 #endif
54 #endif
55