use libm::{log, logf}; use crate::quantity::{Kelvins, Ohms}; /// Convert thermistor resistance to a temperature using beta parameter equation pub fn convert_beta( resistance: Ohms, beta: f32, reference_temp: Kelvins, reference_resist: Ohms, ) -> Kelvins { let kelvins = 1.0 / ((1.0 / reference_temp.0) + (1.0 / beta) * logf(resistance.0 / reference_resist.0)); Kelvins(kelvins) } /// Convert thermistor resistance to a temperature using Steinhart-Hart equation pub fn convert_steinhart( resistance: Ohms, a: f64, b: f64, c: f64, ) -> Kelvins { let log_omhs = log(resistance.0); let kelvins = 1.0 / (a + b * log_omhs + c * log_omhs * log_omhs * log_omhs); Kelvins(kelvins as f32) }