FloatingHex: Read and write hexadecimal floating point numbers

[ bsd3, library, tools ] [ Propose Tags ]

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/


[Skip to Readme]
Versions 0.1, 0.2, 0.3, 0.4 (info)
Change log CHANGES.md
Dependencies base (==4.*), template-haskell (>=2.10 && <2.12) [details]
License BSD-3-Clause
Copyright Levent Erkok
Author Levent Erkok
Maintainer erkokl@gmail.com
Revised Revision 1 made by HerbertValerioRiedel at Sun Jan 15 10:09:07 UTC 2017
Category Tools
Source repo head: git clone git://github.com/LeventErkok/FloatingHex.git
Uploaded by LeventErkok at Sat Jan 14 08:35:02 UTC 2017
Distributions Arch:0.4, LTSHaskell:0.4, NixOS:0.4, openSUSE:0.4
Downloads 2419 total (54 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-01-14 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for FloatingHex-0.1

[back to package description]

FloatingHex: Read/Write Hexadecimal floats

Hackage version Build Status

Hexadecimal Floats

For syntax reference, 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. Some examples are:

  0x1p+1
  0x1p+8
  0x1.b7p-1
  0x1.fffffffffffffp+1023
  0X1.921FB4D12D84AP-1

This format allows for concise and precise string representation for floating point numbers.

Example

{-# LANGUAGE QuasiQuotes #-}
import Data.Numbers.FloatingHex

-- expressions
f :: Double
f = [hf|0x1.f44abd5aa7ca4p+25|]

-- patterns
g :: Float -> String
g [hf|0x1p1|]  = "two!"
g [hf|0x1p-1|] = "half!"
g d            = "something else: " ++ show d

-- showing hexadecimal floats
test = showHFloat [hf|0x1.f44abd5aa7ca4p+25|] ""

(Note that while the quasiquoter allows for floating-point patterns, it is usually not a good idea to have floating-point literals used in pattern matching.)