--- a/src/pdps.rs Fri Aug 14 10:38:27 2026 -0500 +++ b/src/pdps.rs Fri Oct 02 12:03:25 2026 -0500 @@ -53,8 +53,10 @@ use alg_tools::linops::{Mapping, Space, AXPY}; use alg_tools::mapping::{DataTerm, Instance}; use alg_tools::nalgebra_support::ToNalgebraRealField; +use alg_tools::norms::Norm; use anyhow::ensure; use clap::ValueEnum; +use measures::Radon; use numeric_literals::replace_float_literals; use serde::{Deserialize, Serialize}; @@ -156,7 +158,7 @@ A: ForwardModel<DiscreteMeasure<U, F>, F>, for<'b> &'b A::Observable: Instance<A::Observable>, A::Observable: AXPY<Field = F>, - DiscreteMeasure<U, F>: SpikeMerging<F>, + DiscreteMeasure<U, F>: SpikeMerging<F> + Norm<Radon, F>, Reg: RegTerm<U, F>, Phi: Conjugable<A::Observable, F>, for<'b> Phi::Conjugate<'b>: Prox<A::Observable>, @@ -192,6 +194,7 @@ let full_stats = |μ: &DiscreteMeasure<U, F>, ε, stats| IterInfo { value: f.apply(μ) + reg.apply(μ), n_spikes: μ.len(), + μ_norm: μ.norm(Radon), ε, // postprocessing: config.postprocessing.then(|| μ.clone()), ..stats