diff -r f91f382ba4ae -r b9818eb24b47 src/run.rs --- a/src/run.rs Fri Aug 14 10:38:27 2026 -0500 +++ b/src/run.rs Fri Oct 02 12:03:25 2026 -0500 @@ -55,7 +55,7 @@ }; use alg_tools::maputil::map3; use alg_tools::nalgebra_support::ToNalgebraRealField; -use alg_tools::norms::{Dist, NormExponent, L1, L2}; +use alg_tools::norms::{Dist, Norm, NormExponent, L1, L2}; use alg_tools::operator_arithmetic::Weighted; use alg_tools::sets::Cube; use alg_tools::sets::SetOrd; @@ -73,6 +73,7 @@ use serde_json; use std::collections::HashMap; use std::hash::Hash; +//use std::ops::Mul; use std::time::Instant; use thiserror::Error; @@ -402,6 +403,10 @@ pruned: usize, this_iters: usize, epsilon: F, + discrepancy: F, + aux_discrepancy: F, + joint_discrepancy: F, + radon_norm: F, } /// Collected experiment statistics @@ -974,7 +979,7 @@ A::Observable: AXPY, Reg: SlidingRegTerm, F>, P: ProxPenalty, A::PreadjointCodomain, Reg, F> + StepLengthBoundPD>, - RNDM: SpikeMerging, + RNDM: SpikeMerging + Norm, I: AlgIteratorFactory>, Plot: Plotter>, { @@ -1421,10 +1426,10 @@ I: AlgIteratorFactory>, Dat: DifferentiableMapping, Codomain = F, DerivativeDomain = Pair> + BoundedCurvature, - S: ClosedMul, + S: ClosedMul + MinMaxMapping, for<'a> Pair<&'a P, &'a IdOp>: StepLengthBoundPair, //Pair: ClosedMul, - DiscreteMeasure: SpikeMerging, + DiscreteMeasure: SpikeMerging + Norm, Reg: SlidingRegTerm, P: TransportProxPenalty, KOpZ: BoundedLinear @@ -1434,7 +1439,7 @@ Y: ClosedEuclidean + Clone, for<'b> &'b Y: Instance, Z: ClosedEuclidean + Clone + ClosedMul + AXPY, - for<'b> &'b Z: Instance, + for<'b> &'b Z: Instance, // compiler overflow + Mul, R: Prox, H: Conjugable, for<'b> H::Conjugate<'b>: Prox, @@ -1485,10 +1490,10 @@ I: AlgIteratorFactory>, Dat: DifferentiableMapping, Codomain = F, DerivativeDomain = Pair> + BoundedCurvature, - S: ClosedMul, + S: ClosedMul + MinMaxMapping, for<'a> Pair<&'a P, &'a IdOp>: StepLengthBoundPair, //Pair: ClosedMul, - DiscreteMeasure: SpikeMerging, + DiscreteMeasure: SpikeMerging + Norm, Reg: SlidingRegTerm, P: TransportProxPenalty, KOpZ: BoundedLinear @@ -1498,7 +1503,7 @@ Y: ClosedEuclidean + Clone, for<'b> &'b Y: Instance, Z: ClosedEuclidean + Clone + ClosedMul + AXPY, - for<'b> &'b Z: Instance, + for<'b> &'b Z: Instance, // compiler overflow + Mul, R: Prox, H: Conjugable, for<'b> H::Conjugate<'b>: Prox, @@ -1572,13 +1577,13 @@ I: AlgIteratorFactory>, Dat: DifferentiableMapping, Codomain = F, DerivativeDomain = Pair> + BoundedCurvature, - S: ClosedMul, - DiscreteMeasure: SpikeMerging, + S: ClosedMul + MinMaxMapping, + DiscreteMeasure: SpikeMerging + Norm, Reg: SlidingRegTerm, P: TransportProxPenalty, for<'a> Pair<&'a P, &'a IdOp>: StepLengthBoundPair, Z: ClosedEuclidean + AXPY + Clone, - for<'b> &'b Z: Instance, + for<'b> &'b Z: Instance, // compiler overflow + Mul, R: Prox, Plot: Plotter>, { @@ -1615,13 +1620,13 @@ I: AlgIteratorFactory>, Dat: DifferentiableMapping, Codomain = F, DerivativeDomain = Pair> + BoundedCurvature, - S: ClosedMul, - DiscreteMeasure: SpikeMerging, + S: ClosedMul + MinMaxMapping, + DiscreteMeasure: SpikeMerging + Norm, Reg: SlidingRegTerm, P: TransportProxPenalty, for<'a> Pair<&'a P, &'a IdOp>: StepLengthBoundPair, Z: ClosedEuclidean + AXPY + Clone, - for<'b> &'b Z: Instance, + for<'b> &'b Z: Instance, // compiler overflow + Mul, R: Prox, Plot: Plotter>, { @@ -1712,8 +1717,12 @@ inner_iters, merged, pruned, + discrepancy, + aux_discrepancy, + joint_discrepancy, //postprocessing, this_iters, + μ_norm, ε, .. } = data; @@ -1742,7 +1751,11 @@ merged, pruned, this_iters, + radon_norm: μ_norm, epsilon: ε, + discrepancy: discrepancy.unwrap_or(F::NEG_INFINITY), + aux_discrepancy: aux_discrepancy.unwrap_or(F::NEG_INFINITY), + joint_discrepancy: joint_discrepancy.unwrap_or(F::NEG_INFINITY), } };