From 25c4285fc019ac6a6300c8aa71d54d37f252662e Mon Sep 17 00:00:00 2001 From: Simon Gardling Date: Tue, 8 Mar 2022 11:00:32 -0500 Subject: [PATCH] don't partially regen derivative_cache if derivative is disabled --- src/function.rs | 30 +++++++++++++++++------------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/src/function.rs b/src/function.rs index f360df8..c066053 100644 --- a/src/function.rs +++ b/src/function.rs @@ -130,20 +130,24 @@ impl FunctionEntry { ); if self.derivative_cache.is_some() { - let derivative_cache = self.derivative_cache.as_ref().unwrap(); + if self.derivative { + let derivative_cache = self.derivative_cache.as_ref().unwrap(); - self.derivative_cache = Some( - (0..=self.pixel_width) - .map(|x| (x as f64 / resolution as f64) + min_x) - .map(|x| { - if let Some(i) = x_data.get_index(x) { - derivative_cache[i] - } else { - Value::new(x, self.function.derivative(x)) - } - }) - .collect(), - ); + self.derivative_cache = Some( + (0..=self.pixel_width) + .map(|x| (x as f64 / resolution as f64) + min_x) + .map(|x| { + if let Some(i) = x_data.get_index(x) { + derivative_cache[i] + } else { + Value::new(x, self.function.derivative(x)) + } + }) + .collect(), + ); + } else { + self.derivative_cache = None; + } } } else { self.back_cache = None;