26#include <boost/format.hpp>
49 fftw_complex in[
N], out[
N], in2[
N];
55 for (
size_t i = 0; i <
N; i++) {
56 in[i][0] = cos(3.0 * 2.0 * Units::pi *
static_cast<double>(i) /
static_cast<double>(
N));
61 p = fftw_plan_dft_1d(
N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
63 for (
size_t i = 0; i <
N; i++) {
64 log.info() << boost::format(
"freq: %3d %+9.5f %+9.5f I") % i % out[i][0] % out[i][1];
69 printf(
"\nInverse transform:\n");
70 q = fftw_plan_dft_1d(
N, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
73 for (
size_t i = 0; i <
N; i++) {
77 for (
size_t i = 0; i <
N; i++) {
78 log.info() << boost::format(
"recover: %3d %+9.5f %+9.5f I vs. %+9.5f %+9.5f I") % i % in[i][0] % in[i][1] %
79 in2[i][0] % in2[i][1];
85 log.info() <<
"This is the end of the test";
Macro to silence unused variables warnings from the compiler.
ExitCode mainMethod(ELEMENTS_UNUSED map< string, VariableValue > &args) override
static Logging getLogger(const std::string &name="")
Abstract class for all Elements programs.
ExitCode
Strongly typed exit numbers.
#define MAIN_FOR(ELEMENTS_PROGRAM_NAME)