src/zero.rs

changeset 55
15f01efc034b
parent 19
bc7f268b324a
equal deleted inserted replaced
54:cfd8d2304e9e 55:15f01efc034b
1 /*! 1 /*!
2 Implementation of the the constant zero function on a manifold. 2 Implementation of the the constant zero function on a manifold.
3 */ 3 */
4 4
5 use alg_tools::mapping::Apply; 5 use alg_tools::mapping::{Mapping, Instance};
6 use crate::manifold::ManifoldPoint; 6 use crate::manifold::ManifoldPoint;
7 use crate::fb::{Grad, Desc, Prox}; 7 use crate::fb::{Grad, Desc, Prox};
8 use std::marker::PhantomData; 8 use std::marker::PhantomData;
9 9
10 /// Zero function on manifolds. 10 /// Zero function on manifolds.
17 pub fn new() -> Self { 17 pub fn new() -> Self {
18 ZeroFn{_phantoms : PhantomData } 18 ZeroFn{_phantoms : PhantomData }
19 } 19 }
20 } 20 }
21 21
22 impl<M : ManifoldPoint> Apply<M> for ZeroFn<M> { 22 impl<M : ManifoldPoint> Mapping<M> for ZeroFn<M> {
23 type Output = f64; 23 type Codomain = f64;
24 24
25 fn apply(&self, _x : M) -> Self::Output { 25 fn apply<I : Instance<M>>(&self, _x : I) -> Self::Codomain {
26 0.0 26 0.0
27 } 27 }
28 } 28 }
29 29
30 impl<'a, M : ManifoldPoint> Apply<&'a M> for ZeroFn<M> {
31 type Output = f64;
32
33 fn apply(&self, _x : &'a M) -> Self::Output {
34 0.0
35 }
36 }
37 30
38 impl<M : ManifoldPoint> Desc<M> for ZeroFn<M> { 31 impl<M : ManifoldPoint> Desc<M> for ZeroFn<M> {
39 fn desc(&self, _τ : f64, x : M) -> M { 32 fn desc(&self, _τ : f64, x : M) -> M {
40 x 33 x
41 } 34 }

mercurial