src/fe_model/p2_local_model.rs

branch
dev
changeset 171
fa8df5a14486
parent 133
2b13f8a0c8ba
equal deleted inserted replaced
170:221728aeeb7e 171:fa8df5a14486
30 } 30 }
31 31
32 impl<'a, F: Float> Set<Loc<1, F>> for RealInterval<F> { 32 impl<'a, F: Float> Set<Loc<1, F>> for RealInterval<F> {
33 #[inline] 33 #[inline]
34 fn contains<I: Instance<Loc<1, F>>>(&self, z: I) -> bool { 34 fn contains<I: Instance<Loc<1, F>>>(&self, z: I) -> bool {
35 z.eval_ref_decompose(|&Loc([x])| { 35 z.eval_ref(|&Loc([x])| {
36 let &[Loc([x0]), Loc([x1])] = &self.0; 36 let &[Loc([x0]), Loc([x1])] = &self.0;
37 (x0 < x && x < x1) || (x1 < x && x < x0) 37 (x0 < x && x < x1) || (x1 < x && x < x0)
38 }) 38 })
39 } 39 }
40 } 40 }
316 fn minimise_edge( 316 fn minimise_edge(
317 &self, 317 &self,
318 x0: &Loc<2, F>, 318 x0: &Loc<2, F>,
319 x1: &Loc<2, F>, /*, v0 : F, v1 : F*/ 319 x1: &Loc<2, F>, /*, v0 : F, v1 : F*/
320 ) -> (Loc<2, F>, F) { 320 ) -> (Loc<2, F>, F) {
321 let &P2LocalModel { 321 let &P2LocalModel { a0, a1: Loc([a1, a2]), a2: Loc([a11, a12, a22]), .. } = self;
322 a0,
323 a1: Loc([a1, a2]),
324 a2: Loc([a11, a12, a22]),
325 ..
326 } = self;
327 let &Loc([x00, x01]) = x0; 322 let &Loc([x00, x01]) = x0;
328 let d @ Loc([d0, d1]) = x1 - x0; 323 let d @ Loc([d0, d1]) = x1 - x0;
329 let b0 = a0 + a1 * x00 + a2 * x01 + a11 * x00 * x00 + a12 * x00 * x01 + a22 * x01 * x01; 324 let b0 = a0 + a1 * x00 + a2 * x01 + a11 * x00 * x00 + a12 * x00 * x01 + a22 * x01 * x01;
330 let b1 = a1 * d0 325 let b1 = a1 * d0
331 + a2 * d1 326 + a2 * d1

mercurial