use pyo3::prelude::*;
use crate::constants::{C, H, K};
#[pyfunction]
pub fn planck(wave: f64, temp: f64) -> f64 {
let fac1: f64 = 2.0e27 * H * C;
let fac2: f64 = 1.0e9 * H * C / K;
let exponent: f64 = fac2 / (wave * temp);
if exponent > 40.0 {
fac1 * ((-exponent).exp()) / (wave * wave * wave)
} else {
fac1 / exponent.exp_m1() / (wave * wave * wave)
}
}
#[pyfunction]
pub fn dplanck(wave: f64, temp: f64) -> f64 {
let fac2: f64 = 1.0e9 * H * C / K;
let exponent: f64 = fac2 / (wave * temp);
exponent / (1.0 - -exponent.exp()) - 3.0
}
#[pyfunction]
pub fn dlpdlt(wave: f64, temp: f64) -> f64 {
let fac2: f64 = 1.0e9 * H * C / K;
let exponent: f64 = fac2 / (wave * temp);
exponent / (1.0 - (-exponent).exp())
}