1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_average;
5pub use use_correlation;
6pub use use_distribution;
7pub use use_percentile;
8pub use use_standard_deviation;
9pub use use_variance;
10pub use use_z_score;
11
12pub mod prelude;
13
14#[cfg(test)]
15mod tests {
16 use super::prelude::{
17 arithmetic_mean, covariance, median, normalize, pearson_correlation,
18 population_standard_deviation, population_variance, quartiles, range, z_score,
19 };
20
21 #[test]
22 fn facade_exposes_common_statistics_helpers() {
23 let values = [2.0, 4.0, 4.0, 4.0, 5.0, 5.0, 7.0, 9.0];
24 let x = [1.0, 2.0, 3.0, 4.0, 5.0];
25 let y = [2.0, 4.0, 6.0, 8.0, 10.0];
26
27 assert_eq!(arithmetic_mean(&values).expect("mean should compute"), 5.0);
28 assert_eq!(
29 population_variance(&values).expect("variance should compute"),
30 4.0
31 );
32 assert_eq!(
33 population_standard_deviation(&values).expect("standard deviation should compute"),
34 2.0
35 );
36 assert_eq!(median(&values).expect("median should compute"), 4.5);
37 assert_eq!(range(&values).expect("range should compute"), 7.0);
38 assert_eq!(covariance(&x, &y).expect("covariance should compute"), 4.0);
39 assert!(
40 (pearson_correlation(&x, &y).expect("correlation should compute") - 1.0).abs()
41 < 1.0e-12
42 );
43 assert_eq!(
44 z_score(80.0, 70.0, 5.0).expect("z-score should compute"),
45 2.0
46 );
47 assert_eq!(
48 normalize(&[1.0, 2.0, 3.0])
49 .expect("normalization should compute")
50 .len(),
51 3
52 );
53
54 let summary = quartiles(&values).expect("quartiles should compute");
55 assert_eq!(summary.lower, 4.0);
56 assert_eq!(summary.median, 4.5);
57 assert_eq!(summary.upper, 5.5);
58 }
59}