From 12ba62b32208b96ec56124c3257f9d2a2b1023e4 Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Mon, 21 Mar 2022 09:01:11 -0400 Subject: [PATCH] don't unparse derivative_1 every time --- src/function.rs | 2 +- src/parsing.rs | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/function.rs b/src/function.rs index 4a45b18..c2fefa0 100644 --- a/src/function.rs +++ b/src/function.rs @@ -359,7 +359,7 @@ impl FunctionEntry { self.output.display( plot_ui, self.get_func_str(), - &self.function.get_derivative_str(), + self.function.get_derivative_str(), (self.integral_min_x - self.integral_max_x).abs() / (self.integral_num as f64), self.derivative, extrema, diff --git a/src/parsing.rs b/src/parsing.rs index a8ed933..5815ef5 100644 --- a/src/parsing.rs +++ b/src/parsing.rs @@ -8,6 +8,7 @@ lazy_static::lazy_static! { pub struct BackingFunction { function: FlatEx, derivative_1: FlatEx, + derivative_1_str: String, derivative_2: FlatEx, } @@ -17,6 +18,7 @@ impl BackingFunction { let derivative_1 = function .partial(0) .unwrap_or_else(|_| EMPTY_FUNCTION.clone()); + let derivative_1_str = derivative_1.unparse().to_owned().replace("{x}", "x"); let derivative_2 = function .partial_iter([0, 0].iter()) .unwrap_or_else(|_| EMPTY_FUNCTION.clone()); @@ -24,13 +26,12 @@ impl BackingFunction { Self { function, derivative_1, + derivative_1_str, derivative_2, } } - pub fn get_derivative_str(&self) -> String { - String::from(self.derivative_1.unparse()).replace("{x}", "x") - } + pub fn get_derivative_str(&self) -> &str { &self.derivative_1_str } pub fn get(&self, x: f64) -> f64 { self.function.eval(&[x]).unwrap_or(f64::NAN) }