convert-units-0: src/Data/Units/NonStd/Temperature.hs
{-# LANGUAGE TemplateHaskell #-}
module Data.Units.NonStd.Temperature
( Data.Units.SI.Derived.Celsius (..)
, Fahrenheit(..)
) where
import Data.Units.Base
import Data.Units.SI
import Data.Units.SI.Derived
-- | Thermodynamic temperature in Fahrenheit degrees
--
$(mkUnitNoFactor "Fahrenheit" "°F" ''Temperature)
instance Fractional a => ConversionFactor Fahrenheit a where
factor = 5 / 9
{-# INLINE factor #-}
instance Fractional a => ConvertibleUnit Fahrenheit a where
toBaseUnit (Fahrenheit x) = Kelvin ((x + 459.67) * 5 / 9)
{-# INLINE toBaseUnit #-}
fromBaseUnit (Kelvin x) = Fahrenheit (x * 9 / 5 - 459.67)
{-# INLINE fromBaseUnit #-}