bool test_direct_object(const poly_subject_t& subject, const poly_direct_object_t& dirobj) { typedef typename BinarySentenceConcept<T>::subject_type subject_type; typedef typename BinarySentenceConcept<T>::direct_object_type direct_object_type; any_regular_t s_projection(subject.project()); any_regular_t do_projection(dirobj.project()); return s_projection.type_info() != adobe::type_info<subject_type>() || do_projection.type_info() != adobe::type_info<direct_object_type>() ? false : BinarySentenceConcept<T>::test_direct_object(this->get(), s_projection.cast<subject_type>(), do_projection.cast<direct_object_type>()); }
/* more general mixed boundary types */ void do_bc(double *y__0, double t0, double *y__1, double t1, double *f, int n) { int n0 = PrimeStart; int i; if (HOMOCLINIC_FLAG) do_projection(y__0, t0, y__1, t1); set_ivar(0, t0); set_ivar(n0, t1); for (i = 0; i < n; i++) { set_ivar(i + 1, y__0[i]); set_ivar(i + n0 + 1, y__1[i]); } for (i = n; i < n + FIX_VAR; i++) set_ivar(i + 1, evaluate(my_ode[i])); for (i = 0; i < n; i++) f[i] = evaluate(my_bc[i].com); }