--- a/src/fe_model/p2_local_model.rs Sat Dec 21 23:32:20 2024 -0500 +++ b/src/fe_model/p2_local_model.rs Sun Dec 22 14:54:46 2024 -0500 @@ -6,7 +6,8 @@ use crate::loc::Loc; use crate::sets::{Set,NPolygon,SpannedHalfspace}; use crate::linsolve::*; -use crate::euclidean::Dot; +use crate::euclidean::Euclidean; +use crate::instance::Instance; use super::base::{LocalModel,RealLocalModel}; use crate::sets::Cube; use numeric_literals::replace_float_literals; @@ -30,7 +31,8 @@ impl<'a, F : Float> Set<Loc<F,1>> for RealInterval<F> { #[inline] - fn contains(&self, &Loc([x]) : &Loc<F,1>) -> bool { + fn contains<I : Instance<Loc<F, 1>>>(&self, z : I) -> bool { + let &Loc([x]) = z.ref_instance(); let &[Loc([x0]), Loc([x1])] = &self.0; (x0 < x && x < x1) || (x1 < x && x < x0) } @@ -38,11 +40,11 @@ impl<'a, F : Float> Set<Loc<F,2>> for PlanarSimplex<F> { #[inline] - fn contains(&self, x : &Loc<F,2>) -> bool { + fn contains<I : Instance<Loc<F, 2>>>(&self, z : I) -> bool { let &[x0, x1, x2] = &self.0; NPolygon([[x0, x1].spanned_halfspace(), [x1, x2].spanned_halfspace(), - [x2, x0].spanned_halfspace()]).contains(x) + [x2, x0].spanned_halfspace()]).contains(z) } }