meteo_tools/calculations/
heat_index.rs1use crate::constants::constants::ROTHFUSZ_COEFS;
2use crate::{celsius_to_fahrenheit, fahrenheit_to_celsius, meteo_round};
3
4pub fn fahrenheit_heat_index(temperature: &f64, relative_humidity: &f64) -> f64 {
20 let heat_index = ROTHFUSZ_COEFS[0]
21 + ROTHFUSZ_COEFS[1] * temperature
22 + ROTHFUSZ_COEFS[2] * relative_humidity
23 + ROTHFUSZ_COEFS[3] * temperature * relative_humidity
24 + ROTHFUSZ_COEFS[4] * temperature.powi(2)
25 + ROTHFUSZ_COEFS[5] * relative_humidity.powi(2)
26 + ROTHFUSZ_COEFS[6] * temperature.powi(2) * relative_humidity
27 + ROTHFUSZ_COEFS[7] * temperature * relative_humidity.powi(2)
28 + ROTHFUSZ_COEFS[8] * temperature.powi(2) * relative_humidity.powi(2);
29 meteo_round(&heat_index)
30}
31
32pub fn celsius_heat_index(temperature: &f64, relative_humidity: &f64) -> f64 {
48 let fahrenheit_temperature = celsius_to_fahrenheit(temperature);
49 let heat_index = fahrenheit_heat_index(&fahrenheit_temperature, relative_humidity);
50 let fahrenheit_heat_index = fahrenheit_to_celsius(&heat_index);
51 meteo_round(&fahrenheit_heat_index)
52}