src/prox_penalty/radon_squared.rs

branch
dev
changeset 62
32328a74c790
parent 61
4f468d35fa29
equal deleted inserted replaced
61:4f468d35fa29 62:32328a74c790
7 use super::{InsertionConfig, ProxPenalty, ProxTerm, StepLengthBound, StepLengthBoundPD}; 7 use super::{InsertionConfig, ProxPenalty, ProxTerm, StepLengthBound, StepLengthBoundPD};
8 use crate::dataterm::QuadraticDataTerm; 8 use crate::dataterm::QuadraticDataTerm;
9 use crate::forward_model::ForwardModel; 9 use crate::forward_model::ForwardModel;
10 use crate::measures::merging::SpikeMerging; 10 use crate::measures::merging::SpikeMerging;
11 use crate::measures::{DeltaMeasure, DiscreteMeasure, Radon}; 11 use crate::measures::{DeltaMeasure, DiscreteMeasure, Radon};
12 use crate::prox_penalty::StepLengthBoundValue;
12 use crate::regularisation::RegTerm; 13 use crate::regularisation::RegTerm;
13 use crate::types::*; 14 use crate::types::*;
14 use alg_tools::bounds::MinMaxMapping; 15 use alg_tools::bounds::MinMaxMapping;
15 use alg_tools::error::DynResult; 16 use alg_tools::error::DynResult;
16 use alg_tools::instance::{Instance, Space}; 17 use alg_tools::instance::{Instance, Space};
157 where 158 where
158 F: Float + ToNalgebraRealField, 159 F: Float + ToNalgebraRealField,
159 Domain: Space + Norm<Radon, F>, 160 Domain: Space + Norm<Radon, F>,
160 A: ForwardModel<Domain, F> + BoundedLinear<Domain, Radon, L2, F>, 161 A: ForwardModel<Domain, F> + BoundedLinear<Domain, Radon, L2, F>,
161 { 162 {
162 fn step_length_bound(&self, f: &QuadraticDataTerm<F, Domain, A>) -> DynResult<F> { 163 fn step_length_bound(&self, f: &QuadraticDataTerm<F, Domain, A>) -> StepLengthBoundValue<F> {
163 // TODO: direct squared calculation 164 // TODO: direct squared calculation
164 Ok(f.operator().opnorm_bound(Radon, L2)?.powi(2)) 165 match f.operator().opnorm_bound(Radon, L2) {
166 Err(_) => StepLengthBoundValue::Failure,
167 Ok(l) => StepLengthBoundValue::LipschitzFactor(l.powi(2)),
168 }
165 } 169 }
166 } 170 }
167 171
168 #[replace_float_literals(F::cast_from(literal))] 172 #[replace_float_literals(F::cast_from(literal))]
169 impl<'a, F, A, Domain> StepLengthBoundPD<F, A, DiscreteMeasure<Domain, F>> for RadonSquared 173 impl<'a, F, A, Domain> StepLengthBoundPD<F, A, DiscreteMeasure<Domain, F>> for RadonSquared

mercurial