int X(hc2hc_applicable)(const hc2hc_solver *ego, const problem *p_, planner *plnr) { const problem_rdft *p; if (!applicable0(ego, p_, plnr)) return 0; p = (const problem_rdft *) p_; /* emulate fftw2 behavior */ if (NO_VRECURSEP(plnr) && (p->vecsz->rnk > 0)) return 0; return 1; }
int fftwf_hc2hc_applicable(const hc2hc_solver *ego, const problem *p_, planner *plnr) { const problem_rdft *p; if (!applicable0(ego, p_, plnr)) return 0; p = (const problem_rdft *) p_; return (0 || p->vecsz->rnk == 0 || !NO_VRECURSEP(plnr) ); }
int X(ct_applicable)(const ct_solver *ego, const problem *p_, planner *plnr) { const problem_dft *p; if (!applicable0(ego, p_, plnr)) return 0; p = (const problem_dft *) p_; return (0 || ego->dec == DECDIF+TRANSPOSE || p->vecsz->rnk == 0 || !NO_VRECURSEP(plnr) || (ego->force_vrecursionp && ego->force_vrecursionp(ego, p)) ); }
static int applicable(const solver_hc2hc *ego, const problem *p_, const planner *plnr) { const problem_rdft *p; if (!applicable0(ego, p_, plnr)) return 0; p = (const problem_rdft *) p_; /* emulate fftw2 behavior */ if (NO_VRECURSEP(plnr) && (p->vecsz->rnk > 0)) return 0; if (NO_UGLYP(plnr)) { if (X(ct_uglyp)(16, p->sz->dims[0].n, ego->desc->radix)) return 0; if (NONTHREADED_ICKYP(plnr)) return 0; /* prefer threaded version */ } return 1; }