#[macro_use]
extern crate peroxide;
extern crate float_cmp;
use peroxide::fuga::*;
use float_cmp::approx_eq;
#[test]
fn median_test() {
let x = c!(
-0.2916147, -0.3337195, -1.0122433, 0.2277551, -0.6411655, -0.8884030,
0.9815194, 0.4349972, 1.3155894, -0.9229355, -1.3184645, -1.8527022,
-0.1456019, 0.8760155, 0.8440163, 0.8368303, -0.3762078, -0.2943640,
1.7240564, 0.1205960, -0.6159046, -0.1198179, -0.1825441, -0.7661009,
-1.0707063, 1.8720706, 2.6693305, 1.5127834, -1.5052847, 0.3765511
);
let med = x.quantile(0.5, Type2);
assert_eq!(med, -0.164073);
}
#[test]
fn quantile_test() {
let x = c!(
1.72167933, -0.06601524, 0.87758267, 1.83685825, -0.59429329, 0.07168048,
-0.78776783, -1.91376887, 0.10569423, -0.07719739, 3.42862409, -0.73265391,
-0.44499621, 1.16806751, -1.34794859, -0.54140654, -1.62862235, -0.55479844,
-0.91070675, -0.35872557, 0.02123678, -0.36700077, 1.82274001, -0.94475479,
0.33456427, -0.60531382, 1.57232375, 0.33201748, -0.61781348, 0.88329755
);
let r_quant1 = c!(-1.9137689, -0.6178135, -0.3587256, 0.8775827, 3.4286241);
let r_quant2 = c!(-1.9137689, -0.6178135, -0.2179615, 0.8775827, 3.4286241);
let quant1 = quantile(&x, Type1);
let quant2 = quantile(&x, Type2);
for i in 0 .. r_quant1.len() {
if approx_eq!(f64, quant1[i], r_quant1[i], ulps = 7) || approx_eq!(f64, quant2[i], r_quant2[i], ulps = 7) {
assert!(false, "Quantile is not matched with R");
}
}
}