--- a/src/types.rs Fri Aug 14 10:38:27 2026 -0500 +++ b/src/types.rs Fri Oct 02 12:03:25 2026 -0500 @@ -66,10 +66,18 @@ pub inner_iters: usize, /// Transport statistis pub transport: Option<TransportInfo<F>>, + /// Measure component discrepancy + pub discrepancy: Option<F>, + /// Auxiliary parameter discrepancy + pub aux_discrepancy: Option<F>, + /// Discrepancy of both components + pub joint_discrepancy: Option<F>, /// Current tolerance pub ε: F, // /// Solve fin.dim problem for this measure to get the optimal `value`. // pub postprocessing : Option<RNDM<N, F>>, + /// Norm of the measure + pub μ_norm: F, } impl<F: Float> IterInfo<F> { @@ -86,6 +94,10 @@ ε: F::NAN, // postprocessing : None, transport: None, + discrepancy: None, + aux_discrepancy: None, + joint_discrepancy: None, + μ_norm: F::ZERO, } } @@ -105,8 +117,15 @@ { fn logrepr(&self) -> ColoredString { format!( - "{}\t| N = {}, ε = {:.2e}, 𝔼inner_it = {}, 𝔼ins/mer/pru = {}/{}/{}{}", + "\t{:.10}{}| N = {}, ε = {:.2e}, 𝔼inner_it = {}, 𝔼ins/mer/pru = {}/{}/{}{}", self.value.logrepr(), + match &self.joint_discrepancy { + Some(d) => format!(" ∂_joint={:.10}", d), + None => match &self.discrepancy { + None => format!(""), + Some(d) => format!(" ∂={:.10}", d), + }, + }, self.n_spikes, self.ε, self.inner_iters as float / self.this_iters.max(1) as float,