diff --git a/src/moments/mod.rs b/src/moments/mod.rs index 33225bf..034262a 100644 --- a/src/moments/mod.rs +++ b/src/moments/mod.rs @@ -125,14 +125,16 @@ macro_rules! define_moments { /// Estimate the `p`th standardized moment of the population. #[inline] pub fn standardized_moment(&self, p: usize) -> f64 { - let variance = self.central_moment(2); - assert_ne!(variance, 0.); - let n = f64::approx_from(self.n).unwrap(); match p { 0 => n, 1 => 0., 2 => 1., - _ => self.central_moment(p) / pow(variance.sqrt(), p), + _ => { + let variance = self.central_moment(2); + assert_ne!(variance, 0.); + let n = f64::approx_from(self.n).unwrap(); + self.central_moment(p) / pow(variance.sqrt(), p) + }, } } diff --git a/tests/moments.rs b/tests/moments.rs index a1fc3bf..85d60a7 100644 --- a/tests/moments.rs +++ b/tests/moments.rs @@ -14,6 +14,8 @@ use average::{Moments4, Merge}; fn trivial() { let mut a = Moments4::new(); assert_eq!(a.len(), 0); + assert_eq!(a.central_moment(1), 0.0); + assert_eq!(a.standardized_moment(2), 1.0); a.add(1.0); assert_eq!(a.len(), 1); assert_eq!(a.mean(), 1.0);