pub const C: f64 = 2.99792458e8;
pub const H: f64 = 6.6262e-34;
pub const K: f64 = 1.3806e-23;
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)
}
}
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
}
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())
}