logisheets_controller 1.0.0

the core of LogiSheets
Documentation
pub fn tbilleq(settlement: u32, maturity: u32, discount: f64) -> f64 {
    let dsm = (maturity - settlement) as f64;
    if dsm > 182. {
        let price = (100. - discount * 100. * dsm / 360.) / 100.;
        let days = if dsm == 366. { 366. } else { 365. };
        let temp_term2 = dsm.powf(2.) - (2. * dsm / days - 1.) * (1. - 1. * price);
        let term2 = temp_term2.sqrt();
        let term3 = 2. * dsm / days - 1.;

        2. * (term2 - dsm / days) / term3
    } else {
        365. * discount / (360. - discount * dsm)
    }
}

pub fn tbillyield(settlement: u32, maturity: u32, pr: f64) -> f64 {
    let dsm = (maturity - settlement) as f64;
    (100. - pr) / pr * 360. / dsm
}

pub fn tbillprice(settlement: u32, maturity: u32, discount: f64) -> f64 {
    let dsm = (maturity - settlement) as f64;
    100. * (1. - discount * dsm / 360.)
}