static int applicable0(const solver *ego_, const problem *p_, int *rp) { const problem_rdft *p = (const problem_rdft *) p_; const S *ego = (const S *)ego_; return (1 && FINITE_RNK(p->sz->rnk) && FINITE_RNK(p->vecsz->rnk) && p->sz->rnk >= 2 && picksplit(ego, p->sz, rp) ); }
static int applicable0(const solver *ego_, const problem *p_, int *rp) { if (DFTP(p_)) { const problem_dft *p = (const problem_dft *) p_; const S *ego = (const S *)ego_; return ( p->sz->rnk >= 2 && picksplit(ego, p->sz, rp) ); } return 0; }
static int applicable0(const solver *ego_, const problem *p_, int *rp, const planner *plnr) { const problem_rdft2 *p = (const problem_rdft2 *) p_; const S *ego = (const S *)ego_; return (1 && FINITE_RNK(p->sz->rnk) && FINITE_RNK(p->vecsz->rnk) /* FIXME: multidimensional R2HCII ? */ && (p->kind == R2HC || p->kind == HC2R) && p->sz->rnk >= 2 && picksplit(ego, p->sz, rp) && (0 /* can work out-of-place, but HC2R destroys input */ || (p->r0 != p->cr && (p->kind == R2HC || !NO_DESTROY_INPUTP(plnr))) /* FIXME: what are sufficient conditions for inplace? */ || (p->r0 == p->cr)) ); }