numeric_statistics/f64/
all.rs

1#[derive(Debug, Clone)]
2pub struct All {
3    pub min: f64,
4    pub max: f64,
5    pub average: f64,
6    pub variance: f64,
7    pub standard_deviation: f64,
8}
9
10use crate::f64::{
11    min::*,
12    max::*,
13    average::*,
14    variance::*,
15    standard_deviation::*,
16};
17
18impl All {
19    pub fn new<T: AsRef<[f64]>>(values: T) -> All {
20        let min = min(&values);
21        let max = max(&values);
22        let average = average(&values);
23        let variance = variance_with_average(&values, average);
24        let standard_deviation = standard_deviation_with_variance(variance);
25        All { 
26            min, 
27            max, 
28            average, 
29            variance,
30            standard_deviation  
31        }
32    }
33}
34
35#[cfg(test)]
36mod test {
37    use super::*;
38    use crate::assert_eq_f64;
39
40    #[test]
41    fn test_new() {
42        let x = &[1.0, 2.0, 4.0];
43        let all: All = All::new(x);
44        assert_eq!(all.min, 1.0);
45        assert_eq!(all.max, 4.0);
46        assert_eq_f64!(all.average, 2.3333333333333335);
47        assert_eq_f64!(all.variance, 2.3333333333333335);
48        assert_eq_f64!(all.standard_deviation, 1.5275252316519465);
49    }
50
51}