26 #include <boost/program_options.hpp> 27 #include <boost/format.hpp> 37 using boost::program_options::variable_value;
53 fftw_complex in[
N], out[
N], in2[
N];
59 for (
size_t i = 0; i <
N; i++) {
60 in[i][0] = cos(3.0 * 2.0*
Units::pi*static_cast<double>(i)/static_cast<double>(
N));
65 p = fftw_plan_dft_1d(
N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
67 for (
size_t i = 0; i <
N; i++) {
68 log.info() << boost::format(
"freq: %3d %+9.5f %+9.5f I") % i % out[i][0] % out[i][1];
73 printf(
"\nInverse transform:\n");
74 q = fftw_plan_dft_1d(
N, out, in2, FFTW_BACKWARD, FFTW_ESTIMATE);
77 for (
size_t i = 0; i <
N; i++) {
81 for (
size_t i = 0; i <
N; i++) {
82 log.info() << boost::format(
"recover: %3d %+9.5f %+9.5f I vs. %+9.5f %+9.5f I")
83 % i % in[i][0] % in[i][1] % in2[i][0] % in2[i][1];
89 log.info() <<
"This is the end of the test";
ExitCode mainMethod(ELEMENTS_UNUSED map< string, variable_value > &args) override
ExitCode
Strongly typed exit numbers.
Macro to silence unused variables warnings from the compiler.
Abstract class for all Elements programs.
#define MAIN_FOR(ELEMENTS_PROGRAM_NAME)
static Logging getLogger(const std::string &name="")