| Copyright | (c) Levent Erkok |
|---|---|
| License | BSD3 |
| Maintainer | erkokl@gmail.com |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Data.Numbers.FloatingHex
Description
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.
- hf :: QuasiQuoter
- readHFloat :: RealFloat a => String -> Maybe a
- showHFloat :: RealFloat a => a -> ShowS
Documentation
hf :: QuasiQuoter Source #
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
readHFloat :: RealFloat a => String -> Maybe a Source #
Read a float in hexadecimal binary format. Supports negative numbers, and nan/infinity as well.
For regular usage, the quasiquoter (hf) should be employed. But this function can be handy for
programmatic interfaces.
showHFloat :: RealFloat a => a -> ShowS Source #
Show a floating-point value in the hexadecimal format, similar to the %a modifier in C's printf.
>>>showHFloat (212.21 :: Double) """0x1.a86b851eb851fp7">>>showHFloat (-12.76 :: Float) """-0x1.9851ecp3">>>showHFloat (-0 :: Double) """-0x0p+0"