--- a/src/run.rs Wed Dec 07 08:17:46 2022 +0200 +++ b/src/run.rs Fri Dec 09 14:10:48 2022 +0200 @@ -64,6 +64,7 @@ use crate::seminorms::*; use crate::plot::*; use crate::{AlgorithmOverrides, CommandLineArgs}; +use crate::tolerance::Tolerance; /// Available algorithms and their configurations #[derive(Copy, Clone, Debug, Serialize, Deserialize)] @@ -73,6 +74,11 @@ PDPS(PDPSConfig<F>), } +fn unpack_tolerance<F : Float>(v : &Vec<F>) -> Tolerance<F> { + assert!(v.len() == 3); + Tolerance::Power { initial : v[0], factor : v[1], exponent : v[2] } +} + impl<F : ClapFloat> AlgorithmConfig<F> { /// Override supported parameters based on the command line. pub fn cli_override(self, cli : &AlgorithmOverrides<F>) -> Self { @@ -85,6 +91,7 @@ merge_every : cli.merge_every.unwrap_or(g.merge_every), merging : cli.merging.clone().unwrap_or(g.merging), final_merging : cli.final_merging.clone().unwrap_or(g.final_merging), + tolerance: cli.tolerance.as_ref().map(unpack_tolerance).unwrap_or(g.tolerance), .. g } }; @@ -105,6 +112,7 @@ }), FW(fw) => FW(FWConfig { merging : cli.merging.clone().unwrap_or(fw.merging), + tolerance : cli.tolerance.as_ref().map(unpack_tolerance).unwrap_or(fw.tolerance), .. fw }) }