use units::si
### Temperature conversion functions K <-> °C and K <-> °F
let _offset_celsius = 273.15
# Note: from_celsius is used internally by the `… °C` syntax
fn from_celsius(t_celsius: Scalar) -> Temperature = (t_celsius + _offset_celsius) kelvin
@description("Converts from Kelvin to degree Celsius (°C). Can be used on the right hand side of a conversion operator.")
@example("300 K -> °C", "Convert 300 K to degree Celsius.")
@example("55 °F -> °C", "Convert 55 °F to degree Celsius.")
@url("https://en.wikipedia.org/wiki/Conversion_of_scales_of_temperature")
fn °C(t_kelvin: Temperature) -> Scalar = t_kelvin / kelvin - _offset_celsius
@description("An alias for `°C`.")
fn celsius(t_kelvin: Temperature) -> Scalar = °C(t_kelvin)
@description("An alias for `°C`.")
fn degree_celsius(t_kelvin: Temperature) -> Scalar = °C(t_kelvin)
let _offset_fahrenheit = 459.67
let _scale_fahrenheit = 5 / 9
# Note: from_fahrenheit is used internally by the `… °F` syntax
fn from_fahrenheit(t_fahrenheit: Scalar) -> Temperature = ((t_fahrenheit + _offset_fahrenheit) × _scale_fahrenheit) kelvin
@description("Converts from Kelvin to degree Fahrenheit (°F). Can be used on the right hand side of a conversion operator.")
@example("300 K -> °F", "Convert 300 K to degree Fahrenheit.")
@example("25 °C -> °F", "Convert 25 °C to degree Fahrenheit.")
@url("https://en.wikipedia.org/wiki/Conversion_of_scales_of_temperature")
fn °F(t_kelvin: Temperature) -> Scalar = (t_kelvin / kelvin) / _scale_fahrenheit - _offset_fahrenheit
@description("An alias for `°F`.")
fn fahrenheit(t_kelvin: Temperature) -> Scalar = °F(t_kelvin)
@description("An alias for `°F`.")
fn degree_fahrenheit(t_kelvin: Temperature) -> Scalar = °F(t_kelvin)