ebi_arithmetic 0.3.13

Exact arithmetic for Ebi - a stochastic process mining utility
Documentation
use malachite::{base::num::arithmetic::traits::Reciprocal, rational::Rational};

use crate::{
    ebi_number::Recip,
    fraction::{
        fraction_enum::FractionEnum, fraction_exact::FractionExact, fraction_f64::FractionF64,
    },
};

impl Recip for FractionF64 {
    fn recip(self) -> Self {
        Self(self.0.recip())
    }
}

impl Recip for FractionExact {
    fn recip(self) -> Self {
        Self(self.0.recip())
    }
}

impl Recip for FractionEnum {
    fn recip(self) -> Self {
        match self {
            FractionEnum::Exact(f) => FractionEnum::Exact(f.recip()),
            FractionEnum::Approx(f) => FractionEnum::Approx(f.recip()),
            FractionEnum::CannotCombineExactAndApprox => FractionEnum::CannotCombineExactAndApprox,
        }
    }
}

impl Recip for f64 {
    fn recip(self) -> Self {
        1.0 / self
    }
}

impl Recip for Rational {
    fn recip(self) -> Self {
        Rational::reciprocal(self)
    }
}