icentral_stats/
speedup_stats.rs1crate::ix!();
2
3#[derive(Debug)]
4pub struct SpeedupStats {
5 pub mean: f64,
6 pub stddev: f64,
7 pub median: f64,
8 pub min: f64,
9 pub max: f64,
10}
11
12impl From<&mut Vec<f64>> for SpeedupStats {
13
14 fn from(x: &mut Vec<f64>) -> Self {
15
16 x.sort_by(|a,b| FloatOrd(*a).cmp(&FloatOrd(*b)));
17
18 let n = x.len();
19
20 let min = x[0];
21 let max = *x.iter().last().unwrap();
22
23 let sum: f64 = x.iter().sum();
24
25 let mean = sum / n as f64;
26 let median = x[n / 2];
27
28 let mut sum_2: f64 = 0.0;
29
30 for i in 0..n {
31
32 sum_2 += {
33
34 let t0 = x[i] - mean;
35 let t1 = x[i] - mean;
36
37 t0 * t1
38 };
39 }
40
41 let stddev = (sum_2 / n as f64).sqrt();
42
43 Self { min, max, mean, median, stddev }
44 }
45}