Function reservoirs::utils::cdf_rng[][src]

pub fn cdf_rng(obs: &[f64], range: &Range<i32>) -> Vec<f64>
Notable traits for Vec<u8, A>
impl<A> Write for Vec<u8, A> where
    A: Allocator
Expand description

take the cdf of observations over a range of discrete values

  • obs is a reference to a slice of f64 values.
  • range is range of discrete f64 values.
  • Returns a vector of the cdf along range.

Examples

use reservoirs::prelude::*;
fn main() -> Result<(), ResError> {
    let two = vec![1.0, 2.0];
    let whole = vec![0.5, 1.0];
    let four = vec![1.0, 2.0, 3.0, 4.0];
    let half = vec![0.5, 1.0, 1.0, 1.0];
    let quarter = vec![0.25, 0.5, 0.75, 1.0];

    let three = vec![3.0, 4.0];
    let third = vec![0.0, 0.0, 0.5, 1.0];

    let cdf_two = utils::cdf(&two).iter().map(|(a, b)| *b).collect::<Vec<f64>>();
    let cdf_four = utils::cdf(&four).iter().map(|(a, b)| *b).collect::<Vec<f64>>();
    let cdf_two_of_four = utils::cdf_rng(&two, &(1..4));
    let cdf_three_of_four = utils::cdf_rng(&three, &(1..4));

    let thresh = 0.0001;
    for i in 0..cdf_two.len() {
        assert_eq!((whole[i] - cdf_two[i]) < thresh, true);
    }
    for i in 0..cdf_four.len() {
        assert_eq!((quarter[i] - cdf_four[i]) < thresh, true);
        assert_eq!((half[i] - cdf_two_of_four[i]) < thresh, true);
        assert_eq!((third[i] - cdf_three_of_four[i]) < thresh, true);
    }
    Ok(())
}