module Util where tripleDotProduct :: (Double, Double, Double) -> (Double, Double, Double) -> Double tripleDotProduct :: (Double, Double, Double) -> (Double, Double, Double) -> Double tripleDotProduct (Double a, Double b, Double c) (Double d, Double e, Double f) = Double a Double -> Double -> Double forall a. Num a => a -> a -> a * Double d Double -> Double -> Double forall a. Num a => a -> a -> a + Double b Double -> Double -> Double forall a. Num a => a -> a -> a * Double e Double -> Double -> Double forall a. Num a => a -> a -> a + Double c Double -> Double -> Double forall a. Num a => a -> a -> a * Double f fromLinear :: Double -> Double fromLinear :: Double -> Double fromLinear Double c = if Double c Double -> Double -> Bool forall a. Ord a => a -> a -> Bool <= Double 0.0031308 then Double 12.92 Double -> Double -> Double forall a. Num a => a -> a -> a * Double c else Double 1.055 Double -> Double -> Double forall a. Num a => a -> a -> a * (Double c Double -> Double -> Double forall a. Floating a => a -> a -> a ** (Double 1 Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double 2.4)) Double -> Double -> Double forall a. Num a => a -> a -> a - Double 0.055 toLinear :: Double -> Double toLinear :: Double -> Double toLinear Double c = if Double c Double -> Double -> Bool forall a. Ord a => a -> a -> Bool >= Double 0.04045 then ((Double c Double -> Double -> Double forall a. Num a => a -> a -> a + Double 0.055) Double -> Double -> Double forall a. Fractional a => a -> a -> a / (Double 1 Double -> Double -> Double forall a. Num a => a -> a -> a + Double 0.055)) Double -> Double -> Double forall a. Floating a => a -> a -> a ** Double 2.4 else Double c Double -> Double -> Double forall a. Fractional a => a -> a -> a / Double 12.92