--- a/src/fb.rs Wed Nov 06 14:58:31 2024 -0500 +++ b/src/fb.rs Wed Nov 06 18:39:24 2024 -0500 @@ -76,19 +76,20 @@ F : Desc<M> + Mapping<M, Codomain = f64>, G : Prox<M> + Mapping<M, Codomain = f64>, I : AlgIteratorFactory<IterInfo<M>> { + + // Closure that calculates current status + let status = |x : &M| IterInfo { + value : f.apply(x) + g.apply(x), + point : x.clone(), + }; // Perform as many iterations as requested by `iterator`. - for i in iterator.iter() { + for i in iterator.iter_init(|| status(&x)) { // Forward-backward step x = g.prox(τ, f.desc(τ, x)); // If requested by `iterator`, calculate function value and store iterate. - i.if_verbose(|| { - IterInfo { - value : f.apply(&x) + g.apply(&x), - point : x.clone(), - } - }) + i.if_verbose(|| status(&x)) } // Return final iterate.