fftplan *planIFFT(int N) { int *factors = factor(N); optimizeFactors(factors); fftplan *plan = new fftplan; plan->dir = -1; plan->n = getNFactors(factors); plan->N2 = factors; plan->N1 = getN1(factors,N); plan->order = getOrder(plan->n,plan->N1,plan->N2); plan->reorder = (t_fft*)malloc(N*sizeof(t_fft)); plan->t = calcTwiddles(plan->n,plan->N1,plan->N2,plan->order,-1); plan->f = getFuncs(factors); plan->N = N; plan->norm = 1.0f/(real)N; return plan; }
InitterRegister::InitterRegister(boost::function<void (int *, const char ***)> func, int priority) { getFuncs().insert(make_pair(priority, func)); }
void initProgram(int *argc, const char ***argv) { const multimap<int, boost::function<void (int*, const char ***)> > &mp = getFuncs(); for(multimap<int, boost::function<void (int*, const char ***)> >::const_iterator itr = mp.begin(); itr != mp.end(); itr++) { itr->second(argc, argv); } }