sciforge 0.0.3

A comprehensive scientific computing library in pure Rust with zero dependencies
Documentation
use crate::constants::{AMU_TO_KG, C};

pub fn wavenumber_to_wavelength(wavenumber_cm: f64) -> f64 {
    1.0e4 / wavenumber_cm.max(1e-30)
}

pub fn wavelength_to_wavenumber(wavelength_um: f64) -> f64 {
    1.0e4 / wavelength_um.max(1e-30)
}

pub fn wavenumber_to_frequency(wavenumber_cm: f64) -> f64 {
    wavenumber_cm * (C * 1e2)
}

pub fn force_constant_from_frequency(wavenumber: f64, reduced_mass_amu: f64) -> f64 {
    let c_cm = C * 1e2;
    let mu = reduced_mass_amu * AMU_TO_KG;
    let nu = wavenumber * c_cm;
    4.0 * std::f64::consts::PI.powi(2) * nu * nu * mu
}

pub fn reduced_mass(m1: f64, m2: f64) -> f64 {
    m1 * m2 / (m1 + m2).max(1e-30)
}

pub fn ir_intensity_ratio(absorbance_sample: f64, absorbance_reference: f64) -> f64 {
    absorbance_sample / absorbance_reference.max(1e-30)
}