{-# 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
$(mkUnitNoFactor "Fahrenheit" "°F" ''Temperature)
instance Fractional a => ConversionFactor Fahrenheit a where
factor :: a
factor = a
5 a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
9
{-# INLINE factor #-}
instance Fractional a => ConvertibleUnit Fahrenheit a where
toBaseUnit :: Fahrenheit a -> BaseUnitOf Fahrenheit a
toBaseUnit (Fahrenheit a
x) = a -> Kelvin a
forall a. a -> Kelvin a
Kelvin ((a
x a -> a -> a
forall a. Num a => a -> a -> a
+ a
459.67) a -> a -> a
forall a. Num a => a -> a -> a
* a
5 a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
9)
{-# INLINE toBaseUnit #-}
fromBaseUnit :: BaseUnitOf Fahrenheit a -> Fahrenheit a
fromBaseUnit (Kelvin a
x) = a -> Fahrenheit a
forall a. a -> Fahrenheit a
Fahrenheit (a
x a -> a -> a
forall a. Num a => a -> a -> a
* a
9 a -> a -> a
forall a. Fractional a => a -> a -> a
/ a
5 a -> a -> a
forall a. Num a => a -> a -> a
- a
459.67)
{-# INLINE fromBaseUnit #-}