numeric_statistics/f64/
all.rs1#[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}