#include #include #include #include #include "pocketfft_hdronly.h" using namespace std; using namespace pocketfft; // floating point RNG which is good enough for sinmple demos // Do not use for anything important! inline double simple_drand() { constexpr double norm = 1./RAND_MAX; return rand()*norm; } template void crand(vector> &v) { for (auto & i:v) i = complex(simple_drand()-0.5, simple_drand()-0.5); } template long double l2err (const vector &v1, const vector &v2) { long double sum1=0, sum2=0; for (size_t i=0; i), tmpd=sizeof(complex), tmpl=sizeof(complex); for (int i=shape.size()-1; i>=0; --i) { stridef[i]=tmpf; tmpf*=shape[i]; strided[i]=tmpd; tmpd*=shape[i]; stridel[i]=tmpl; tmpl*=shape[i]; } size_t ndata=1; for (size_t i=0; i> dataf(ndata); vector> datad(ndata); vector> datal(ndata); crand(dataf); for (size_t i=0; i