static int applicable(const S *ego, const problem *p_, const planner *plnr) { if (NO_BUFFERINGP(plnr)) return 0; if (!applicable0(ego, p_, plnr)) return 0; if (NO_UGLYP(plnr)) { const problem_dft *p = (const problem_dft *) p_; if (p->ri != p->ro) return 0; if (X(toobig)(p->sz->dims[0].n)) return 0; } return 1; }
static int applicable(const problem *p_, const S *ego, const planner *plnr) { const problem_rdft2 *p; if (NO_BUFFERINGP(plnr)) return 0; if (!applicable0(p_, ego, plnr)) return 0; p = (const problem_rdft2 *) p_; if (NO_UGLYP(plnr)) { if (p->r0 != p->cr) return 0; if (X(toobig)(p->sz->dims[0].n)) return 0; } return 1; }
static int applicable(const problem *p_, const planner *plnr) { const problem_rdft2 *p; if (NO_BUFFERINGP(plnr)) return 0; if (!applicable0(p_, plnr)) return 0; p = (const problem_rdft2 *) p_; if (p->kind == HC2R) { if (NO_UGLYP(plnr)) { /* UGLY if in-place and too big, since the problem could be solved via transpositions */ if (p->r0 == p->cr && X(toobig)(p->sz->dims[0].n)) return 0; } } else { if (NO_UGLYP(plnr)) { if (p->r0 != p->cr || X(toobig)(p->sz->dims[0].n)) return 0; } } return 1; }
static int applicable(const S *ego, const problem *p_, const planner *plnr) { const problem_rdft *p; if (NO_BUFFERINGP(plnr)) return 0; if (!applicable0(ego, p_, plnr)) return 0; p = (const problem_rdft *) p_; if (p->kind[0] == HC2R) { if (NO_UGLYP(plnr)) { /* UGLY if in-place and too big, since the problem could be solved via transpositions */ if (p->I == p->O && fftwf_toobig(p->sz->dims[0].n)) return 0; } } else { if (NO_UGLYP(plnr)) { if (p->I != p->O) return 0; if (fftwf_toobig(p->sz->dims[0].n)) return 0; } } return 1; }