-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Read and write hexadecimal floating point numbers
--   
--   Read and write hexadecimal floating point numbers. Provides a
--   quasiquoter for entering hex-float literals, and a function for
--   printing them in hexadecimal.
--   
--   See: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf,
--   pages 57-58. We slightly diverge from the standard and do not allow
--   for the "floating-suffix," as the type inference of Haskell makes this
--   unnecessary.
--   
--   For details, please see:
--   http://github.com/LeventErkok/FloatingHex/
@package FloatingHex
@version 0.5

-- | Reading/Writing hexadecimal floating-point numbers.
--   
--   See: http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf,
--   pages 57-58. We slightly diverge from the standard and do not allow
--   for the "floating-suffix," as the type inference of Haskell makes this
--   unnecessary.
module Data.Numbers.FloatingHex

-- | A quasiquoter for hexadecimal floating-point literals. See:
--   http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf,
--   pages 57-58. We slightly diverge from the standard and do not allow
--   for the "floating-suffix," as the type inference of Haskell makes this
--   unnecessary.
--   
--   Example:
--   
--   
--   {-# LANGUAGE QuasiQuotes #-}
--   import Data.Numbers.FloatingHex
--   
--   f :: Double
--   f = [hf|0x1.f44abd5aa7ca4p+25|]
--   
--   
--   With these definitions, f will be equal to the number
--   6.5574266708245546e7
hf :: QuasiQuoter

-- | Due to intricacies of conversion between Float and
--   Double types (see
--   http://ghc.haskell.org/trac/ghc/ticket/3676), we explicitly
--   introduce a class to do the reading properly.
class RealFloat a => FloatingHexReader a

-- | Convert a hex-float from a string, if possible.
readHFloat :: FloatingHexReader a => String -> Maybe a

-- | Show a floating-point value in the hexadecimal format, similar to the
--   %a specifier in C's printf.
--   
--   
--   >>> showHFloat (212.21 :: Double) ""
--   "0x1.a86b851eb851fp7"
--   
--   >>> showHFloat (-12.76 :: Float) ""
--   "-0x1.9851ecp3"
--   
--   >>> showHFloat (-0 :: Double) ""
--   "-0x0p+0"
--   
showHFloat :: RealFloat a => a -> ShowS
instance Data.Numbers.FloatingHex.FloatingHexReader GHC.Types.Double
instance Data.Numbers.FloatingHex.FloatingHexReader GHC.Types.Float
