@@ -181,7 +181,7 @@ impl<T: Float + FromPrimitive> Stats<T> for [T] {
// `lo`. Together `hi+lo` are exactly equal to `x+y`.
let hi = x + y;
let lo = y - (hi - x);
if lo != Float::zero() {
if lo != T::zero() {
partials[j] = lo;
j += 1;
}
@@ -210,7 +210,7 @@ impl<T: Float + FromPrimitive> Stats<T> for [T] {

fn mean(&self) -> T {
assert!(self.len() != 0);
self.sum() / FromPrimitive::from_usize(self.len()).unwrap()
self.sum() / T::from_usize(self.len()).unwrap()
}

fn median(&self) -> T {
@@ -230,7 +230,7 @@ impl<T: Float + FromPrimitive> Stats<T> for [T] {
// NB: this is _supposed to be_ len-1, not len. If you
// change it back to len, you will be calculating a
// population variance, not a sample variance.
let denom = FromPrimitive::from_usize(self.len()-1).unwrap();
let denom = T::from_usize(self.len()-1).unwrap();
v/denom
}
}
@@ -240,7 +240,7 @@ impl<T: Float + FromPrimitive> Stats<T> for [T] {
}

fn std_dev_pct(&self) -> T {
let hundred = FromPrimitive::from_usize(100).unwrap();
let hundred = T::from_usize(100).unwrap();
(self.std_dev() / self.mean()) * hundred
}

@@ -249,12 +249,12 @@ impl<T: Float + FromPrimitive> Stats<T> for [T] {
let abs_devs: Vec<T> = self.iter().map(|&v| (med - v).abs()).collect();
// This constant is derived by smarter statistics brains than me, but it is
// consistent with how R and other packages treat the MAD.
let number = FromPrimitive::from_f64(1.4826).unwrap();
let number = T::from_f64(1.4826).unwrap();
abs_devs.median() * number
}

fn median_abs_dev_pct(&self) -> T {
let hundred = FromPrimitive::from_usize(100).unwrap();
let hundred = T::from_usize(100).unwrap();
(self.median_abs_dev() / self.median()) * hundred
}

@@ -293,12 +293,12 @@ fn percentile_of_sorted<T: Float + FromPrimitive>(sorted_samples: &[T],
}
let zero: T = Float::zero();
assert!(zero <= pct);
let hundred = FromPrimitive::from_usize(100).unwrap();
let hundred = T::from_usize(100).unwrap();
assert!(pct <= hundred);
if pct == hundred {
return sorted_samples[sorted_samples.len() - 1];
}
let length = FromPrimitive::from_usize(sorted_samples.len() - 1).unwrap();
let length = T::from_usize(sorted_samples.len() - 1).unwrap();
let rank = (pct / hundred) * length;
let lrank = rank.floor();
let d = rank - lrank;