static int applicable0(const solver *ego_, const problem *p_, int *dp) { if (RDFT2P(p_)) { const S *ego = (const S *) ego_; const problem_rdft2 *p = (const problem_rdft2 *) p_; if (FINITE_RNK(p->vecsz->rnk) && p->vecsz->rnk > 0 && pickdim(ego, p->vecsz, p->r != p->rio && p->r != p->iio, dp)) { if (p->r != p->rio && p->r != p->iio) return 1; /* can always operate out-of-place */ return(X(rdft2_inplace_strides)(p, *dp)); } } return 0; }
static int applicable(const solver *ego_, const problem *p_) { UNUSED(ego_); if (RDFT2P(p_)) { const problem_rdft2 *p = (const problem_rdft2 *) p_; return( /* case 1 : -infty vector rank */ (p->vecsz->rnk == RNK_MINFTY) /* case 2 : rank-0 in-place HC2R rdft */ || ( p->kind == HC2R && p->sz->rnk == 0 && FINITE_RNK(p->vecsz->rnk) && (p->r == p->rio || p->r == p->iio) && X(rdft2_inplace_strides)(p, RNK_MINFTY) )); } return 0; }