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_NDR_H
10#define KISS_NDR_H
11
12#include "kiss_fft.h"
13#include "kiss_fftr.h"
14#include "kiss_fftnd.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20typedef struct kiss_fftndr_state *kiss_fftndr_cfg;
21
22
23kiss_fftndr_cfg KISS_FFT_API kiss_fftndr_alloc(const int *dims,int ndims,int inverse_fft,void*mem,size_t*lenmem);
24/*
25 dims[0] must be even
26
27 If you don't care to allocate space, use mem = lenmem = NULL
28*/
29
30
31void KISS_FFT_API kiss_fftndr(
32 kiss_fftndr_cfg cfg,
33 const kiss_fft_scalar *timedata,
34 kiss_fft_cpx *freqdata);
35/*
36 input timedata has dims[0] X dims[1] X ... X dims[ndims-1] scalar points
37 output freqdata has dims[0] X dims[1] X ... X dims[ndims-1]/2+1 complex points
38*/
39
40void KISS_FFT_API kiss_fftndri(
41 kiss_fftndr_cfg cfg,
42 const kiss_fft_cpx *freqdata,
43 kiss_fft_scalar *timedata);
44/*
45 input and output dimensions are the exact opposite of kiss_fftndr
46*/
47
48
49#define kiss_fftndr_free free
50
51#ifdef __cplusplus
52}
53#endif
54
55#endif
56