src/fb.rs

changeset 46
90cc221eb52b
parent 22
cecdde4ff5c9
child 56
34f8ec636368
equal deleted inserted replaced
45:cac6978dc7dd 46:90cc221eb52b
9 use colored::ColoredString; 9 use colored::ColoredString;
10 use crate::manifold::{EmbeddedManifoldPoint, ManifoldPoint}; 10 use crate::manifold::{EmbeddedManifoldPoint, ManifoldPoint};
11 11
12 /// Trait for function objects that implement gradients 12 /// Trait for function objects that implement gradients
13 pub trait Grad<M : ManifoldPoint> { 13 pub trait Grad<M : ManifoldPoint> {
14 /// Calculates the gradient of `self` at `x`.
14 fn grad(&self, x : &M) -> M::Tangent; 15 fn grad(&self, x : &M) -> M::Tangent;
15 } 16 }
16 17
17 /// Trait for function objects that implement gradient steps 18 /// Trait for function objects that implement gradient steps
18 pub trait Desc<M : ManifoldPoint> { 19 pub trait Desc<M : ManifoldPoint> {
20 /// Calculates the gradient steps of `self` at `x` for the step length `τ`.
19 fn desc(&self, τ : f64, x : M) -> M; 21 fn desc(&self, τ : f64, x : M) -> M;
20 } 22 }
21 23
22 /*impl<M : ManifoldPoint, T : Grad<M>> Desc<M> for T { 24 /*impl<M : ManifoldPoint, T : Grad<M>> Desc<M> for T {
23 fn desc(&self, τ : f64, x : M) -> M { 25 fn desc(&self, τ : f64, x : M) -> M {
37 } 39 }
38 } 40 }
39 41
40 /// Trait for function objects that implement proximal steps 42 /// Trait for function objects that implement proximal steps
41 pub trait Prox<M : ManifoldPoint> { 43 pub trait Prox<M : ManifoldPoint> {
44 /// Calculates the proximap map of `self` at `x` for the step length `τ`.
42 fn prox(&self, τ : f64, x : M) -> M; 45 fn prox(&self, τ : f64, x : M) -> M;
43 } 46 }
44 47
45 /// This structure is used to store information from algorithm iterations 48 /// This structure is used to store information from algorithm iterations
46 #[derive(Clone,Debug,Serialize)] 49 #[derive(Clone,Debug,Serialize)]

mercurial