use std::f32;
use std::f64;
use std::i32;
use std::i64;
use std::isize;
pub trait StatData where Self: Copy + PartialOrd {
fn min() -> Self;
fn max() -> Self;
fn any() -> Self;
fn into_f64(sample: Self) -> f64;
}
impl StatData for i32 {
#[inline]
fn min() -> i32 {
i32::MIN
}
#[inline]
fn max() -> i32 {
i32::MAX
}
#[inline]
fn any() -> i32 {
0
}
#[inline]
fn into_f64(sample: i32) -> f64 {
sample as f64
}
}
impl StatData for i64 {
#[inline]
fn min() -> i64 {
i64::MIN
}
#[inline]
fn max() -> i64 {
i64::MAX
}
#[inline]
fn any() -> i64 {
0
}
#[inline]
fn into_f64(sample: i64) -> f64 {
sample as f64
}
}
impl StatData for isize {
#[inline]
fn min() -> isize {
isize::MIN
}
#[inline]
fn max() -> isize {
isize::MAX
}
#[inline]
fn any() -> isize {
0
}
#[inline]
fn into_f64(sample: isize) -> f64 {
sample as f64
}
}
impl StatData for f32 {
#[inline]
fn min() -> f32 {
f32::NEG_INFINITY
}
#[inline]
fn max() -> f32 {
f32::INFINITY
}
#[inline]
fn any() -> f32 {
f32::NAN
}
#[inline]
fn into_f64(sample: f32) -> f64 {
sample as f64
}
}
impl StatData for f64 {
#[inline]
fn min() -> f64 {
f64::NEG_INFINITY
}
#[inline]
fn max() -> f64 {
f64::INFINITY
}
#[inline]
fn any() -> f64 {
f64::NAN
}
#[inline]
fn into_f64(sample: f64) -> f64 {
sample
}
}