sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
pub fn half_life_to_decay_constant(half_life: f64) -> f64 {
    2.0_f64.ln() / half_life.max(1e-30)
}

pub fn decay_constant_to_half_life(lambda: f64) -> f64 {
    2.0_f64.ln() / lambda.max(1e-30)
}

pub fn remaining_nuclei(n0: f64, lambda: f64, t: f64) -> f64 {
    n0 * (-lambda * t).exp()
}

pub fn activity(lambda: f64, n: f64) -> f64 {
    lambda * n
}

pub fn decay_chain_intermediate(n0: f64, lambda1: f64, lambda2: f64, t: f64) -> f64 {
    if (lambda1 - lambda2).abs() < 1e-30 {
        return n0 * lambda1 * t * (-lambda1 * t).exp();
    }
    n0 * lambda1 / (lambda2 - lambda1) * ((-lambda1 * t).exp() - (-lambda2 * t).exp())
}

pub fn specific_activity(lambda: f64, avogadro: f64, molar_mass: f64) -> f64 {
    lambda * avogadro / molar_mass.max(1e-30)
}