use crate::day_count::fixed::CalculatedBounds;
use crate::day_count::fixed::Epoch;
use crate::day_count::fixed::Fixed;
use crate::day_count::fixed::FromFixed;
use crate::day_count::fixed::ToFixed;
use crate::day_count::prelude::BoundedDayCount;
const MJD_EPOCH: f64 = 678576.0;
#[derive(Debug, PartialEq, PartialOrd, Clone, Copy, Default)]
pub struct ModifiedJulianDay(f64);
impl CalculatedBounds for ModifiedJulianDay {}
impl FromFixed for ModifiedJulianDay {
fn from_fixed(t: Fixed) -> ModifiedJulianDay {
ModifiedJulianDay(t.get() - MJD_EPOCH)
}
}
impl ToFixed for ModifiedJulianDay {
fn to_fixed(self) -> Fixed {
Fixed::new(MJD_EPOCH + self.0)
}
}
impl Epoch for ModifiedJulianDay {
fn epoch() -> Fixed {
Fixed::new(MJD_EPOCH)
}
}
impl BoundedDayCount<f64> for ModifiedJulianDay {
fn new(t: f64) -> ModifiedJulianDay {
debug_assert!(ModifiedJulianDay::in_effective_bounds(t).is_ok());
ModifiedJulianDay(t)
}
fn get(self) -> f64 {
self.0
}
}