rounded-hw-0.1.0.0: src/Numeric/Rounded/Hardware/Backend.hs
{-|
Module: Numeric.Rounded.Hardware.Backend
Although popular CPUs allow program to control the rounding direction of floating-point operations,
such feature is not directly accessible to Haskell.
Several options are available to control the rounding direction, including
* Emulate the operations using 'Rational'.
* Emulate the desired rounding behavior using the default rounding direction (i.e. round to nearest).
* Provide the rounding-direction-controlled operations in C or assembly, and use FFI to call them from Haskell.
* C FFI is portable, but has limitations (e.g. cannot return multiple values directly).
* GHC-specific @foreign import prim@ can return multiple values efficiently, but cannot be implemented in C.
This library implements the first and third options, in "Numeric.Rounded.Hardware.Backend.ViaRational" and "Numeric.Rounded.Hardware.Backend.C"/"Numeric.Rounded.Hardware.Backend.FastFFI" respectively.
The default implementation for 'Float' and 'Double' depends on the platform and package flags.
To help the programmer identify which implementation is used, this module provides a function to obtain the name of implementation.
To disable use of FFI, enable the package flag @pure-hs@.
-}
module Numeric.Rounded.Hardware.Backend (backendName) where
import Numeric.Rounded.Hardware.Internal (backendName)