Skip to content

File fft_core.h

File List > fft > fft_core.h

Go to the documentation of this file

#ifndef FFT_CORE_H
#define FFT_CORE_H

#include "clib_common.h"
#include "dp/pocketfft.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct {
    pocketfft_plan *plan_f64; 
    pocketfft_plan *plan_f32; 
    size_t          n;        
    int             sign;     
} fft_state_t;

fft_state_t *fft_create(size_t n, int sign, int nthreads);

void fft_destroy(fft_state_t *state);

void fft_reset(fft_state_t *state);

size_t fft_execute_cf64_max_out(fft_state_t *state);

size_t fft_execute_cf64(fft_state_t *state,
                        const double complex *in, size_t n_in,
                        double complex *out);

size_t fft_execute_cf32_max_out(fft_state_t *state);

size_t fft_execute_cf32(fft_state_t *state,
                        const float complex *in, size_t n_in,
                        float complex *out);

size_t fft_execute_inplace_cf64_max_out(fft_state_t *state);

size_t fft_execute_inplace_cf64(fft_state_t *state,
                                const double complex *in, size_t n_in,
                                double complex *out);

size_t fft_execute_inplace_cf32_max_out(fft_state_t *state);

size_t fft_execute_inplace_cf32(fft_state_t *state,
                                const float complex *in, size_t n_in,
                                float complex *out);

#ifdef __cplusplus
}
#endif

#endif /* FFT_CORE_H */