//! Convergence configuration and reporting. use std::time::Duration; use smallvec::SmallVec; #[derive(Clone, Copy, Debug)] pub struct ConvergenceOptions { pub max_iter: usize, pub epsilon: f64, } impl Default for ConvergenceOptions { fn default() -> Self { Self { max_iter: crate::ITERATIONS, epsilon: crate::EPSILON, } } } /// Post-hoc summary of a `History::converge` call. #[derive(Clone, Debug)] pub struct ConvergenceReport { pub iterations: usize, pub final_step: (f64, f64), pub log_evidence: f64, pub converged: bool, pub per_iteration_time: SmallVec<[Duration; 32]>, pub slices_skipped: usize, }