{-# LANGUAGE Safe #-}
{-# LANGUAGE MagicHash #-}
{-# OPTIONS_HADDOCK not-home #-}

-- |
--
-- Module      :  GHC.Float
-- Copyright   :  (c) The University of Glasgow 1994-2002
--                Portions obtained from hbc (c) Lennart Augusstson
-- License     :  see libraries/base/LICENSE
--
-- Maintainer  :  ghc-devs@haskell.org
-- Stability   :  internal
-- Portability :  non-portable (GHC Extensions)
--
-- The types 'Float' and 'Double', the classes 'Floating' and 'RealFloat' and
-- casting between Word32 and Float and Word64 and Double.
--

module GHC.Float
    (-- *  Classes
     Floating(..),
     RealFloat(..),
     -- *  'Float'
     Float(..),
     Float#,
     -- **  Conversion
     float2Int,
     int2Float,
     word2Float,
     integerToFloat#,
     naturalToFloat#,
     rationalToFloat,
     castWord32ToFloat,
     castFloatToWord32,
     castWord32ToFloat#,
     castFloatToWord32#,
     float2Double,
     -- **  Operations
     floorFloat,
     ceilingFloat,
     truncateFloat,
     roundFloat,
     properFractionFloat,
     -- **  Predicate
     isFloatDenormalized,
     isFloatFinite,
     isFloatInfinite,
     isFloatNaN,
     isFloatNegativeZero,
     -- **  Comparison
     gtFloat,
     geFloat,
     leFloat,
     ltFloat,
     -- **  Arithmetic
     plusFloat,
     minusFloat,
     timesFloat,
     divideFloat,
     negateFloat,
     expFloat,
     expm1Float,
     logFloat,
     log1pFloat,
     sqrtFloat,
     fabsFloat,
     sinFloat,
     cosFloat,
     tanFloat,
     asinFloat,
     acosFloat,
     atanFloat,
     sinhFloat,
     coshFloat,
     tanhFloat,
     asinhFloat,
     acoshFloat,
     atanhFloat,
     -- *  'Double'
     Double(..),
     Double#,
     -- **  Conversion
     double2Int,
     int2Double,
     word2Double,
     integerToDouble#,
     naturalToDouble#,
     rationalToDouble,
     castWord64ToDouble,
     castDoubleToWord64,
     castWord64ToDouble#,
     castDoubleToWord64#,
     double2Float,
     -- **  Operations
     floorDouble,
     ceilingDouble,
     truncateDouble,
     roundDouble,
     properFractionDouble,
     -- **  Predicate
     isDoubleDenormalized,
     isDoubleFinite,
     isDoubleInfinite,
     isDoubleNaN,
     isDoubleNegativeZero,
     -- **  Comparison
     gtDouble,
     geDouble,
     leDouble,
     ltDouble,
     -- **  Arithmetic
     plusDouble,
     minusDouble,
     timesDouble,
     divideDouble,
     negateDouble,
     expDouble,
     expm1Double,
     logDouble,
     log1pDouble,
     sqrtDouble,
     fabsDouble,
     sinDouble,
     cosDouble,
     tanDouble,
     asinDouble,
     acosDouble,
     atanDouble,
     sinhDouble,
     coshDouble,
     tanhDouble,
     asinhDouble,
     acoshDouble,
     atanhDouble,
     -- *  Formatting
     showFloat,
     FFFormat(..),
     formatRealFloat,
     formatRealFloatAlt,
     showSignedFloat,
     -- *  Operations
     log1mexpOrd,
     roundTo,
     floatToDigits,
     integerToBinaryFloat',
     fromRat,
     fromRat',
     roundingMode#,
     -- *  Monomorphic equality operators
     -- |  See GHC.Classes#matching_overloaded_methods_in_rules
     eqFloat,
     eqDouble,
     -- *  Internal
     -- |  These may vanish in a future release
     clamp,
     expt,
     expts,
     expts10,
     fromRat'',
     maxExpt,
     maxExpt10,
     minExpt,
     powerDouble,
     powerFloat,
     stgDoubleToWord64,
     stgFloatToWord32,
     stgWord64ToDouble,
     stgWord32ToFloat
     ) where

import GHC.Internal.Float