BSD-3-Clause licensed by Edward A. Kmett
Maintained by Edward A. Kmett
This version can be pinned in stack with:half-0.3.1@sha256:5aabf5325762b2d6335b9e3f88602431af2b954e14b058bea3e93168a8e0eb53,2058

Module documentation for 0.3.1


Hackage Build Status

This package supplies half-precision floating point values w/ 1 bit of sign, 5 bits of exponent, 11 bits of mantissa trailing a leading 1 bit with proper underflow.

These arise commonly in GPU applications.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on

-Edward Kmett


0.3.1 [2021-01-04]

  • Downgraded testing claims that NaNs will round-trip, as 32-bit GHCs aren’t fulfilling that promise. Now we merely claim that a NaN will return as a NaN.
  • Always provide NFData Half instance
  • Add Binary Half instance
  • Explicitly mark module as Trustworthy
  • Fix isInfinite
  • Add experimental support for GHCJS, add pure conversion functions.


  • Fixed bound in floatRange.
  • Fixed decodeFloat.
  • Added a Lift instance for Half for template-haskell support.

  • Avoid the new warnings for missing pattern synonym signatures on GHC 8

  • Fixed an issue with Storable that was causing crashing for some users.

  • Added support for older GHCs still. unsafeShiftR was only added in 7.4.


  • Fixed isInfinite.
  • Added support for older GHCs. On GHC < 7.8 the pattern synonyms are disabled.


  • Removed need for GeneralizedNewtypeDeriving and ScopedTypeVariables.

  • Fixed source repository location


  • Renamed toFloat to fromHalf for easier unqualified use.
  • Added a Read instance.


  • Added a CTYPE to the Half declaration so that it can be used with CApiFFI as an unsigned short.


  • Initial release