{-# LANGUAGE TypeSynonymInstances #-} module Foundation.Numerical.Floating ( FloatingPoint(..) ) where import Basement.Compat.Base import Data.Proxy import qualified Prelude -- | IEEE754 Floating Point class FloatingPoint a where floatRadix :: Proxy a -> Integer floatDigits :: Proxy a -> Int floatRange :: Proxy a -> (Int, Int) floatDecode :: a -> (Integer, Int) floatEncode :: Integer -> Int -> a instance FloatingPoint Float where floatRadix _ = Prelude.floatRadix (0.0 :: Float) floatDigits _ = Prelude.floatDigits (0.0 :: Float) floatRange _ = Prelude.floatRange (0.0 :: Float) floatDecode = Prelude.decodeFloat floatEncode = Prelude.encodeFloat instance FloatingPoint Double where floatRadix _ = Prelude.floatRadix (0.0 :: Double) floatDigits _ = Prelude.floatDigits (0.0 :: Double) floatRange _ = Prelude.floatRange (0.0 :: Double) floatDecode = Prelude.decodeFloat floatEncode = Prelude.encodeFloat