Example #1
0
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;
}
Example #2
0
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)
	  );
}
Example #3
0
File: ct.c Project: Aegisub/fftw3
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;
}