GHC.Float

base-4.16.4.0: Basic libraries

Copyright | (c) The University of Glasgow 1994-2002 Portions obtained from hbc (c) Lennart Augusstson
License | see libraries/base/LICENSE
Maintainer | cvs-ghc@haskell.org
Stability | internal
Portability | non-portable (GHC Extensions)
Safe Haskell | Trustworthy
Language | Haskell2010

GHC.Float

Contents

- Monomorphic equality operators
- Orphan instances

Description

The types `Float` and `Double`, the classes `Floating` and `RealFloat` and casting between Word32 and Float and Word64 and Double.

Synopsis

- integerToFloat# :: Integer -> Float#
- integerToDouble# :: Integer -> Double#
- naturalToFloat# :: Natural -> Float#
- naturalToDouble# :: Natural -> Double#
- rationalToFloat :: Integer -> Integer -> Float
- rationalToDouble :: Integer -> Integer -> Double
- class Fractional a => Floating a where
  - pi :: a
  - exp, log, sqrt :: a -> a
  - (**), logBase :: a -> a -> a
  - sin, cos, tan :: a -> a
  - asin, acos, atan :: a -> a
  - sinh, cosh, tanh :: a -> a
  - asinh, acosh, atanh :: a -> a
  - log1p :: a -> a
  - expm1 :: a -> a
  - log1pexp :: a -> a
  - log1mexp :: a -> a
- class (RealFrac a, Floating a) => RealFloat a where
  - floatRadix :: a -> Integer
  - floatDigits :: a -> Int
  - floatRange :: a -> (Int, Int)
  - decodeFloat :: a -> (Integer, Int)
  - encodeFloat :: Integer -> Int -> a
  - exponent :: a -> Int
  - significand :: a -> a
  - scaleFloat :: Int -> a -> a
  - isNaN :: a -> Bool
  - isInfinite :: a -> Bool
  - isDenormalized :: a -> Bool
  - isNegativeZero :: a -> Bool
  - isIEEE :: a -> Bool
  - atan2 :: a -> a -> a
- acosDouble :: Double -> Double
- acosFloat :: Float -> Float
- acoshDouble :: Double -> Double
- acoshFloat :: Float -> Float
- asinDouble :: Double -> Double
- asinFloat :: Float -> Float
- asinhDouble :: Double -> Double
- asinhFloat :: Float -> Float
- atanDouble :: Double -> Double
- atanFloat :: Float -> Float
- atanhDouble :: Double -> Double
- atanhFloat :: Float -> Float
- castDoubleToWord64 :: Double -> Word64
- castFloatToWord32 :: Float -> Word32
- castWord32ToFloat :: Word32 -> Float
- castWord64ToDouble :: Word64 -> Double
- clamp :: Int -> Int -> Int
- cosDouble :: Double -> Double
- cosFloat :: Float -> Float
- coshDouble :: Double -> Double
- coshFloat :: Float -> Float
- divideDouble :: Double -> Double -> Double
- divideFloat :: Float -> Float -> Float
- double2Float :: Double -> Float
- expDouble :: Double -> Double
- expFloat :: Float -> Float
- expm1Double :: Double -> Double
- expm1Float :: Float -> Float
- expt :: Integer -> Int -> Integer
- expts :: Array Int Integer
- expts10 :: Array Int Integer
- fabsDouble :: Double -> Double
- fabsFloat :: Float -> Float
- float2Double :: Float -> Double
- floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int)
- formatRealFloat :: RealFloat a => FFFormat -> Maybe Int -> a -> String
- formatRealFloatAlt :: RealFloat a => FFFormat -> Maybe Int -> Bool -> a -> String
- fromRat :: RealFloat a => Rational -> a
- fromRat' :: RealFloat a => Rational -> a
- fromRat'' :: RealFloat a => Int -> Int -> Integer -> Integer -> a
- geDouble :: Double -> Double -> Bool
- geFloat :: Float -> Float -> Bool
- gtDouble :: Double -> Double -> Bool
- gtFloat :: Float -> Float -> Bool
- integerToBinaryFloat' :: RealFloat a => Integer -> a
- isDoubleDenormalized :: Double -> Int
- isDoubleFinite :: Double -> Int
- isDoubleInfinite :: Double -> Int
- isDoubleNaN :: Double -> Int
- isDoubleNegativeZero :: Double -> Int
- isFloatDenormalized :: Float -> Int
- isFloatFinite :: Float -> Int
- isFloatInfinite :: Float -> Int
- isFloatNaN :: Float -> Int
- isFloatNegativeZero :: Float -> Int
- leDouble :: Double -> Double -> Bool
- leFloat :: Float -> Float -> Bool
- log1mexpOrd :: (Ord a, Floating a) => a -> a
- log1pDouble :: Double -> Double
- log1pFloat :: Float -> Float
- logDouble :: Double -> Double
- logFloat :: Float -> Float
- ltDouble :: Double -> Double -> Bool
- ltFloat :: Float -> Float -> Bool
- maxExpt :: Int
- maxExpt10 :: Int
- minExpt :: Int
- minusDouble :: Double -> Double -> Double
- minusFloat :: Float -> Float -> Float
- negateDouble :: Double -> Double
- negateFloat :: Float -> Float
- plusDouble :: Double -> Double -> Double
- plusFloat :: Float -> Float -> Float
- powerDouble :: Double -> Double -> Double
- powerFloat :: Float -> Float -> Float
- roundTo :: Int -> Int -> [Int] -> (Int, [Int])
- roundingMode# :: Integer -> Int# -> Int#
- showFloat :: RealFloat a => a -> ShowS
- showSignedFloat :: RealFloat a => (a -> ShowS) -> Int -> a -> ShowS
- sinDouble :: Double -> Double
- sinFloat :: Float -> Float
- sinhDouble :: Double -> Double
- sinhFloat :: Float -> Float
- sqrtDouble :: Double -> Double
- sqrtFloat :: Float -> Float
- stgDoubleToWord64 :: Double# -> Word#
- stgFloatToWord32 :: Float# -> Word32#
- stgWord32ToFloat :: Word32# -> Float#
- stgWord64ToDouble :: Word# -> Double#
- tanDouble :: Double -> Double
- tanFloat :: Float -> Float
- tanhDouble :: Double -> Double
- tanhFloat :: Float -> Float
- timesDouble :: Double -> Double -> Double
- timesFloat :: Float -> Float -> Float
- word2Double :: Word -> Double
- word2Float :: Word -> Float
- data FFFormat
  - = FFExponent
  - | FFFixed
  - | FFGeneric
- data Float = F# Float#
- data Double = D# Double#
- data Float# :: TYPE 'FloatRep
- data Double# :: TYPE 'DoubleRep
- double2Int :: Double -> Int
- int2Double :: Int -> Double
- float2Int :: Float -> Int
- int2Float :: Int -> Float
- eqFloat :: Float -> Float -> Bool
- eqDouble :: Double -> Double -> Bool

# Documentation

integerToFloat# :: Integer -> Float# Source #

Convert an Integer to a Float#

integerToDouble# :: Integer -> Double# Source #

Convert an Integer to a Double#

naturalToFloat# :: Natural -> Float# Source #

Convert a Natural to a Float#

naturalToDouble# :: Natural -> Double# Source #

Encode a Natural (mantissa) into a Double#

rationalToFloat :: Integer -> Integer -> Float Source #

rationalToDouble :: Integer -> Integer -> Double Source #

class Fractional a => Floating a where Source #

Trigonometric and hyperbolic functions and related functions.

The Haskell Report defines no laws for `Floating`. However, `(`+`)`, `(`*`)` and `exp` are customarily expected to define an exponential field and have the following properties:

- `exp (a + b)` = `exp a * exp b`
- `exp (fromInteger 0)` = `fromInteger 1`

Minimal complete definition

pi, exp, log, sin, cos, asin, acos, atan, sinh, cosh, asinh, acosh, atanh

Methods

pi :: a Source #

exp :: a -> a Source #

log :: a -> a Source #

sqrt :: a -> a Source #

(**) :: a -> a -> a infixr 8 Source #

logBase :: a -> a -> a Source #

sin :: a -> a Source #

cos :: a -> a Source #

tan :: a -> a Source #

asin :: a -> a Source #

acos :: a -> a Source #

atan :: a -> a Source #

sinh :: a -> a Source #

cosh :: a -> a Source #

tanh :: a -> a Source #

asinh :: a -> a Source #

acosh :: a -> a Source #

atanh :: a -> a Source #

log1p :: a -> a Source #

``log1p` x` computes ``log` (1 + x)`, but provides more precise results for small (absolute) values of `x` if possible.

Since: base-4.9.0.0

expm1 :: a -> a Source #

``expm1` x` computes ``exp` x - 1`, but provides more precise results for small (absolute) values of `x` if possible.

Since: base-4.9.0.0

log1pexp :: a -> a Source #

``log1pexp` x` computes ``log` (1 + `exp` x)`, but provides more precise results if possible.

Examples:

- if `x` is a large negative number, ``log` (1 + `exp` x)` will be imprecise for the reasons given in `log1p`.
- if ``exp` x` is close to `-1`, ``log` (1 + `exp` x)` will be imprecise for the reasons given in `expm1`.

Since: base-4.9.0.0

log1mexp :: a -> a Source #

``log1mexp` x` computes ``log` (1 - `exp` x)`, but provides more precise results if possible.

Examples:

- if `x` is a large negative number, ``log` (1 - `exp` x)` will be imprecise for the reasons given in `log1p`.
- if ``exp` x` is close to `1`, ``log` (1 - `exp` x)` will be imprecise for the reasons given in `expm1`.

Since: base-4.9.0.0

#### Instances

Instances details

Floating CDouble Source # |
Instance details Defined in Foreign.C.Types Methods pi :: CDouble Source # exp :: CDouble -> CDouble Source # log :: CDouble -> CDouble Source # sqrt :: CDouble -> CDouble Source # (**) :: CDouble -> CDouble -> CDouble Source # logBase :: CDouble -> CDouble -> CDouble Source # sin :: CDouble -> CDouble Source # cos :: CDouble -> CDouble Source # tan :: CDouble -> CDouble Source # asin :: CDouble -> CDouble Source # acos :: CDouble -> CDouble Source # atan :: CDouble -> CDouble Source # sinh :: CDouble -> CDouble Source # cosh :: CDouble -> CDouble Source # tanh :: CDouble -> CDouble Source # asinh :: CDouble -> CDouble Source # acosh :: CDouble -> CDouble Source # atanh :: CDouble -> CDouble Source # log1p :: CDouble -> CDouble Source # expm1 :: CDouble -> CDouble Source # log1pexp :: CDouble -> CDouble Source # log1mexp :: CDouble -> CDouble Source #
Floating CFloat Source # |
Instance details Defined in Foreign.C.Types Methods pi :: CFloat Source # exp :: CFloat -> CFloat Source # log :: CFloat -> CFloat Source # sqrt :: CFloat -> CFloat Source # (**) :: CFloat -> CFloat -> CFloat Source # logBase :: CFloat -> CFloat -> CFloat Source # sin :: CFloat -> CFloat Source # cos :: CFloat -> CFloat Source # tan :: CFloat -> CFloat Source # asin :: CFloat -> CFloat Source # acos :: CFloat -> CFloat Source # atan :: CFloat -> CFloat Source # sinh :: CFloat -> CFloat Source # cosh :: CFloat -> CFloat Source # tanh :: CFloat -> CFloat Source # asinh :: CFloat -> CFloat Source # acosh :: CFloat -> CFloat Source # atanh :: CFloat -> CFloat Source # log1p :: CFloat -> CFloat Source # expm1 :: CFloat -> CFloat Source # log1pexp :: CFloat -> CFloat Source # log1mexp :: CFloat -> CFloat Source #
Floating Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods pi :: Double Source # exp :: Double -> Double Source # log :: Double -> Double Source # sqrt :: Double -> Double Source # (**) :: Double -> Double -> Double Source # logBase :: Double -> Double -> Double Source # sin :: Double -> Double Source # cos :: Double -> Double Source # tan :: Double -> Double Source # asin :: Double -> Double Source # acos :: Double -> Double Source # atan :: Double -> Double Source # sinh :: Double -> Double Source # cosh :: Double -> Double Source # tanh :: Double -> Double Source # asinh :: Double -> Double Source # acosh :: Double -> Double Source # atanh :: Double -> Double Source # log1p :: Double -> Double Source # expm1 :: Double -> Double Source # log1pexp :: Double -> Double Source # log1mexp :: Double -> Double Source #
Floating Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods pi :: Float Source # exp :: Float -> Float Source # log :: Float -> Float Source # sqrt :: Float -> Float Source # (**) :: Float -> Float -> Float Source # logBase :: Float -> Float -> Float Source # sin :: Float -> Float Source # cos :: Float -> Float Source # tan :: Float -> Float Source # asin :: Float -> Float Source # acos :: Float -> Float Source # atan :: Float -> Float Source # sinh :: Float -> Float Source # cosh :: Float -> Float Source # tanh :: Float -> Float Source # asinh :: Float -> Float Source # acosh :: Float -> Float Source # atanh :: Float -> Float Source # log1p :: Float -> Float Source # expm1 :: Float -> Float Source # log1pexp :: Float -> Float Source # log1mexp :: Float -> Float Source #
RealFloat a => Floating (Complex a) Source # | Since: base-2.1
Instance details Defined in Data.Complex Methods pi :: Complex a Source # exp :: Complex a -> Complex a Source # log :: Complex a -> Complex a Source # sqrt :: Complex a -> Complex a Source # (**) :: Complex a -> Complex a -> Complex a Source # logBase :: Complex a -> Complex a -> Complex a Source # sin :: Complex a -> Complex a Source # cos :: Complex a -> Complex a Source # tan :: Complex a -> Complex a Source # asin :: Complex a -> Complex a Source # acos :: Complex a -> Complex a Source # atan :: Complex a -> Complex a Source # sinh :: Complex a -> Complex a Source # cosh :: Complex a -> Complex a Source # tanh :: Complex a -> Complex a Source # asinh :: Complex a -> Complex a Source # acosh :: Complex a -> Complex a Source # atanh :: Complex a -> Complex a Source # log1p :: Complex a -> Complex a Source # expm1 :: Complex a -> Complex a Source # log1pexp :: Complex a -> Complex a Source # log1mexp :: Complex a -> Complex a Source #
Floating a => Floating (Identity a) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Identity Methods pi :: Identity a Source # exp :: Identity a -> Identity a Source # log :: Identity a -> Identity a Source # sqrt :: Identity a -> Identity a Source # (**) :: Identity a -> Identity a -> Identity a Source # logBase :: Identity a -> Identity a -> Identity a Source # sin :: Identity a -> Identity a Source # cos :: Identity a -> Identity a Source # tan :: Identity a -> Identity a Source # asin :: Identity a -> Identity a Source # acos :: Identity a -> Identity a Source # atan :: Identity a -> Identity a Source # sinh :: Identity a -> Identity a Source # cosh :: Identity a -> Identity a Source # tanh :: Identity a -> Identity a Source # asinh :: Identity a -> Identity a Source # acosh :: Identity a -> Identity a Source # atanh :: Identity a -> Identity a Source # log1p :: Identity a -> Identity a Source # expm1 :: Identity a -> Identity a Source # log1pexp :: Identity a -> Identity a Source # log1mexp :: Identity a -> Identity a Source #
Floating a => Floating (Down a) Source # | Since: base-4.14.0.0
Instance details Defined in Data.Ord Methods pi :: Down a Source # exp :: Down a -> Down a Source # log :: Down a -> Down a Source # sqrt :: Down a -> Down a Source # (**) :: Down a -> Down a -> Down a Source # logBase :: Down a -> Down a -> Down a Source # sin :: Down a -> Down a Source # cos :: Down a -> Down a Source # tan :: Down a -> Down a Source # asin :: Down a -> Down a Source # acos :: Down a -> Down a Source # atan :: Down a -> Down a Source # sinh :: Down a -> Down a Source # cosh :: Down a -> Down a Source # tanh :: Down a -> Down a Source # asinh :: Down a -> Down a Source # acosh :: Down a -> Down a Source # atanh :: Down a -> Down a Source # log1p :: Down a -> Down a Source # expm1 :: Down a -> Down a Source # log1pexp :: Down a -> Down a Source # log1mexp :: Down a -> Down a Source #
Floating a => Floating (Op a b) Source # |
Instance details Defined in Data.Functor.Contravariant Methods pi :: Op a b Source # exp :: Op a b -> Op a b Source # log :: Op a b -> Op a b Source # sqrt :: Op a b -> Op a b Source # (**) :: Op a b -> Op a b -> Op a b Source # logBase :: Op a b -> Op a b -> Op a b Source # sin :: Op a b -> Op a b Source # cos :: Op a b -> Op a b Source # tan :: Op a b -> Op a b Source # asin :: Op a b -> Op a b Source # acos :: Op a b -> Op a b Source # atan :: Op a b -> Op a b Source # sinh :: Op a b -> Op a b Source # cosh :: Op a b -> Op a b Source # tanh :: Op a b -> Op a b Source # asinh :: Op a b -> Op a b Source # acosh :: Op a b -> Op a b Source # atanh :: Op a b -> Op a b Source # log1p :: Op a b -> Op a b Source # expm1 :: Op a b -> Op a b Source # log1pexp :: Op a b -> Op a b Source # log1mexp :: Op a b -> Op a b Source #
Floating a => Floating (Const a b) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Const Methods pi :: Const a b Source # exp :: Const a b -> Const a b Source # log :: Const a b -> Const a b Source # sqrt :: Const a b -> Const a b Source # (**) :: Const a b -> Const a b -> Const a b Source # logBase :: Const a b -> Const a b -> Const a b Source # sin :: Const a b -> Const a b Source # cos :: Const a b -> Const a b Source # tan :: Const a b -> Const a b Source # asin :: Const a b -> Const a b Source # acos :: Const a b -> Const a b Source # atan :: Const a b -> Const a b Source # sinh :: Const a b -> Const a b Source # cosh :: Const a b -> Const a b Source # tanh :: Const a b -> Const a b Source # asinh :: Const a b -> Const a b Source # acosh :: Const a b -> Const a b Source # atanh :: Const a b -> Const a b Source # log1p :: Const a b -> Const a b Source # expm1 :: Const a b -> Const a b Source # log1pexp :: Const a b -> Const a b Source # log1mexp :: Const a b -> Const a b Source #

class (RealFrac a, Floating a) => RealFloat a where Source #

Efficient, machine-independent access to the components of a floating-point number.

Minimal complete definition

floatRadix, floatDigits, floatRange, decodeFloat, encodeFloat, isNaN, isInfinite, isDenormalized, isNegativeZero, isIEEE

Methods

floatRadix :: a -> Integer Source #

a constant function, returning the radix of the representation (often `2`)

floatDigits :: a -> Int Source #

a constant function, returning the number of digits of `floatRadix` in the significand

floatRange :: a -> (Int, Int) Source #

a constant function, returning the lowest and highest values the exponent may assume

decodeFloat :: a -> (Integer, Int) Source #

The function `decodeFloat` applied to a real floating-point number returns the significand expressed as an `Integer` and an appropriately scaled exponent (an `Int`). If ``decodeFloat` x` yields `(m,n)`, then `x` is equal in value to `m*b^^n`, where `b` is the floating-point radix, and furthermore, either `m` and `n` are both zero or else `b^(d-1) <= `abs` m < b^d`, where `d` is the value of ``floatDigits` x`. In particular, ``decodeFloat` 0 = (0,0)`. If the type contains a negative zero, also ``decodeFloat` (-0.0) = (0,0)`. The result of ``decodeFloat` x` is unspecified if either of ``isNaN` x` or ``isInfinite` x` is `True`.

encodeFloat :: Integer -> Int -> a Source #

`encodeFloat` performs the inverse of `decodeFloat` in the sense that for finite `x` with the exception of `-0.0`, ``uncurry` `encodeFloat` (`decodeFloat` x) = x`. ``encodeFloat` m n` is one of the two closest representable floating-point numbers to `m*b^^n` (or `±Infinity` if overflow occurs); usually the closer, but if `m` contains too many bits, the result may be rounded in the wrong direction.

exponent :: a -> Int Source #

`exponent` corresponds to the second component of `decodeFloat`. ``exponent` 0 = 0` and for finite nonzero `x`, ``exponent` x = snd (`decodeFloat` x) + `floatDigits` x`. If `x` is a finite floating-point number, it is equal in value to ``significand` x * b ^^ `exponent` x`, where `b` is the floating-point radix. The behaviour is unspecified on infinite or `NaN` values.

significand :: a -> a Source #

The first component of `decodeFloat`, scaled to lie in the open interval (`-1`,`1`), either `0.0` or of absolute value `>= 1/b`, where `b` is the floating-point radix. The behaviour is unspecified on infinite or `NaN` values.

scaleFloat :: Int -> a -> a Source #

multiplies a floating-point number by an integer power of the radix

isNaN :: a -> Bool Source #

`True` if the argument is an IEEE "not-a-number" (NaN) value

isInfinite :: a -> Bool Source #

`True` if the argument is an IEEE infinity or negative infinity

isDenormalized :: a -> Bool Source #

`True` if the argument is too small to be represented in normalized format

isNegativeZero :: a -> Bool Source #

`True` if the argument is an IEEE negative zero

isIEEE :: a -> Bool Source #

`True` if the argument is an IEEE floating point number

atan2 :: a -> a -> a Source #

a version of arctangent taking two real floating-point arguments. For real floating `x` and `y`, ``atan2` y x` computes the angle (from the positive x-axis) of the vector from the origin to the point `(x,y)`. ``atan2` y x` returns a value in the range [`-pi`, `pi`]. It follows the Common Lisp semantics for the origin when signed zeroes are supported. ``atan2` y 1`, with `y` in a type that is `RealFloat`, should return the same value as ``atan` y`. A default definition of `atan2` is provided, but implementors can provide a more accurate implementation.

#### Instances

Instances details

RealFloat CDouble Source # |
Instance details Defined in Foreign.C.Types Methods floatRadix :: CDouble -> Integer Source # floatDigits :: CDouble -> Int Source # floatRange :: CDouble -> (Int, Int) Source # decodeFloat :: CDouble -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> CDouble Source # exponent :: CDouble -> Int Source # significand :: CDouble -> CDouble Source # scaleFloat :: Int -> CDouble -> CDouble Source # isNaN :: CDouble -> Bool Source # isInfinite :: CDouble -> Bool Source # isDenormalized :: CDouble -> Bool Source # isNegativeZero :: CDouble -> Bool Source # isIEEE :: CDouble -> Bool Source # atan2 :: CDouble -> CDouble -> CDouble Source #
RealFloat CFloat Source # |
Instance details Defined in Foreign.C.Types Methods floatRadix :: CFloat -> Integer Source # floatDigits :: CFloat -> Int Source # floatRange :: CFloat -> (Int, Int) Source # decodeFloat :: CFloat -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> CFloat Source # exponent :: CFloat -> Int Source # significand :: CFloat -> CFloat Source # scaleFloat :: Int -> CFloat -> CFloat Source # isNaN :: CFloat -> Bool Source # isInfinite :: CFloat -> Bool Source # isDenormalized :: CFloat -> Bool Source # isNegativeZero :: CFloat -> Bool Source # isIEEE :: CFloat -> Bool Source # atan2 :: CFloat -> CFloat -> CFloat Source #
RealFloat Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods floatRadix :: Double -> Integer Source # floatDigits :: Double -> Int Source # floatRange :: Double -> (Int, Int) Source # decodeFloat :: Double -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Double Source # exponent :: Double -> Int Source # significand :: Double -> Double Source # scaleFloat :: Int -> Double -> Double Source # isNaN :: Double -> Bool Source # isInfinite :: Double -> Bool Source # isDenormalized :: Double -> Bool Source # isNegativeZero :: Double -> Bool Source # isIEEE :: Double -> Bool Source # atan2 :: Double -> Double -> Double Source #
RealFloat Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods floatRadix :: Float -> Integer Source # floatDigits :: Float -> Int Source # floatRange :: Float -> (Int, Int) Source # decodeFloat :: Float -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Float Source # exponent :: Float -> Int Source # significand :: Float -> Float Source # scaleFloat :: Int -> Float -> Float Source # isNaN :: Float -> Bool Source # isInfinite :: Float -> Bool Source # isDenormalized :: Float -> Bool Source # isNegativeZero :: Float -> Bool Source # isIEEE :: Float -> Bool Source # atan2 :: Float -> Float -> Float Source #
RealFloat a => RealFloat (Identity a) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Identity Methods floatRadix :: Identity a -> Integer Source # floatDigits :: Identity a -> Int Source # floatRange :: Identity a -> (Int, Int) Source # decodeFloat :: Identity a -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Identity a Source # exponent :: Identity a -> Int Source # significand :: Identity a -> Identity a Source # scaleFloat :: Int -> Identity a -> Identity a Source # isNaN :: Identity a -> Bool Source # isInfinite :: Identity a -> Bool Source # isDenormalized :: Identity a -> Bool Source # isNegativeZero :: Identity a -> Bool Source # isIEEE :: Identity a -> Bool Source # atan2 :: Identity a -> Identity a -> Identity a Source #
RealFloat a => RealFloat (Down a) Source # | Since: base-4.14.0.0
Instance details Defined in Data.Ord Methods floatRadix :: Down a -> Integer Source # floatDigits :: Down a -> Int Source # floatRange :: Down a -> (Int, Int) Source # decodeFloat :: Down a -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Down a Source # exponent :: Down a -> Int Source # significand :: Down a -> Down a Source # scaleFloat :: Int -> Down a -> Down a Source # isNaN :: Down a -> Bool Source # isInfinite :: Down a -> Bool Source # isDenormalized :: Down a -> Bool Source # isNegativeZero :: Down a -> Bool Source # isIEEE :: Down a -> Bool Source # atan2 :: Down a -> Down a -> Down a Source #
RealFloat a => RealFloat (Const a b) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Functor.Const Methods floatRadix :: Const a b -> Integer Source # floatDigits :: Const a b -> Int Source # floatRange :: Const a b -> (Int, Int) Source # decodeFloat :: Const a b -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Const a b Source # exponent :: Const a b -> Int Source # significand :: Const a b -> Const a b Source # scaleFloat :: Int -> Const a b -> Const a b Source # isNaN :: Const a b -> Bool Source # isInfinite :: Const a b -> Bool Source # isDenormalized :: Const a b -> Bool Source # isNegativeZero :: Const a b -> Bool Source # isIEEE :: Const a b -> Bool Source # atan2 :: Const a b -> Const a b -> Const a b Source #

acosDouble :: Double -> Double Source #

acosFloat :: Float -> Float Source #

acoshDouble :: Double -> Double Source #

acoshFloat :: Float -> Float Source #

asinDouble :: Double -> Double Source #

asinFloat :: Float -> Float Source #

asinhDouble :: Double -> Double Source #

asinhFloat :: Float -> Float Source #

atanDouble :: Double -> Double Source #

atanFloat :: Float -> Float Source #

atanhDouble :: Double -> Double Source #

atanhFloat :: Float -> Float Source #

castDoubleToWord64 :: Double -> Word64 Source #

``castFloatToWord64` f` does a bit-for-bit copy from a floating-point value to an integral value.

Since: base-4.11.0.0

castFloatToWord32 :: Float -> Word32 Source #

``castFloatToWord32` f` does a bit-for-bit copy from a floating-point value to an integral value.

Since: base-4.11.0.0

castWord32ToFloat :: Word32 -> Float Source #

``castWord32ToFloat` w` does a bit-for-bit copy from an integral value to a floating-point value.

Since: base-4.11.0.0

castWord64ToDouble :: Word64 -> Double Source #

``castWord64ToDouble` w` does a bit-for-bit copy from an integral value to a floating-point value.

Since: base-4.11.0.0

clamp :: Int -> Int -> Int Source #

cosDouble :: Double -> Double Source #

cosFloat :: Float -> Float Source #

coshDouble :: Double -> Double Source #

coshFloat :: Float -> Float Source #

divideDouble :: Double -> Double -> Double Source #

divideFloat :: Float -> Float -> Float Source #

double2Float :: Double -> Float Source #

expDouble :: Double -> Double Source #

expFloat :: Float -> Float Source #

expm1Double :: Double -> Double Source #

expm1Float :: Float -> Float Source #

expt :: Integer -> Int -> Integer Source #

expts :: Array Int Integer Source #

expts10 :: Array Int Integer Source #

fabsDouble :: Double -> Double Source #

fabsFloat :: Float -> Float Source #

float2Double :: Float -> Double Source #

floatToDigits :: RealFloat a => Integer -> a -> ([Int], Int) Source #

`floatToDigits` takes a base and a non-negative `RealFloat` number, and returns a list of digits and an exponent. In particular, if `x>=0`, and

    floatToDigits base x = ([d1,d2,...,dn], e)

then

1.     n >= 1

2.     x = 0.d1d2...dn * (base**e)

3.     0 <= di <= base-1

formatRealFloat :: RealFloat a => FFFormat -> Maybe Int -> a -> String Source #

formatRealFloatAlt :: RealFloat a => FFFormat -> Maybe Int -> Bool -> a -> String Source #

fromRat :: RealFloat a => Rational -> a Source #

Converts a `Rational` value into any type in class `RealFloat`.

fromRat' :: RealFloat a => Rational -> a Source #

fromRat'' :: RealFloat a => Int -> Int -> Integer -> Integer -> a Source #

geDouble :: Double -> Double -> Bool Source #

geFloat :: Float -> Float -> Bool Source #

gtDouble :: Double -> Double -> Bool Source #

gtFloat :: Float -> Float -> Bool Source #

integerToBinaryFloat' :: RealFloat a => Integer -> a Source #

Converts a positive integer to a floating-point value.

The value nearest to the argument will be returned. If there are two such values, the one with an even significand will be returned (i.e. IEEE roundTiesToEven).

The argument must be strictly positive, and `floatRadix (undefined :: a)` must be 2.

isDoubleDenormalized :: Double -> Int Source #

isDoubleFinite :: Double -> Int Source #

isDoubleInfinite :: Double -> Int Source #

isDoubleNaN :: Double -> Int Source #

isDoubleNegativeZero :: Double -> Int Source #

isFloatDenormalized :: Float -> Int Source #

isFloatFinite :: Float -> Int Source #

isFloatInfinite :: Float -> Int Source #

isFloatNaN :: Float -> Int Source #

isFloatNegativeZero :: Float -> Int Source #

leDouble :: Double -> Double -> Bool Source #

leFloat :: Float -> Float -> Bool Source #

log1mexpOrd :: (Ord a, Floating a) => a -> a Source #

Default implementation for ``log1mexp`` requiring ``Ord`` to test against a threshold to decide which implementation variant to use.

log1pDouble :: Double -> Double Source #

log1pFloat :: Float -> Float Source #

logDouble :: Double -> Double Source #

logFloat :: Float -> Float Source #

ltDouble :: Double -> Double -> Bool Source #

ltFloat :: Float -> Float -> Bool Source #

maxExpt :: Int Source #

maxExpt10 :: Int Source #

minExpt :: Int Source #

minusDouble :: Double -> Double -> Double Source #

minusFloat :: Float -> Float -> Float Source #

negateDouble :: Double -> Double Source #

negateFloat :: Float -> Float Source #

plusDouble :: Double -> Double -> Double Source #

plusFloat :: Float -> Float -> Float Source #

powerDouble :: Double -> Double -> Double Source #

powerFloat :: Float -> Float -> Float Source #

roundTo :: Int -> Int -> [Int] -> (Int, [Int]) Source #

roundingMode# :: Integer -> Int# -> Int# Source #

showFloat :: RealFloat a => a -> ShowS Source #

Show a signed `RealFloat` value to full precision using standard decimal notation for arguments whose absolute value lies between `0.1` and `9,999,999`, and scientific notation otherwise.

showSignedFloat Source #

Arguments

:: RealFloat a |
=> (a -> ShowS) | a function that can show unsigned values
-> Int | the precedence of the enclosing context
-> a | the value to show
-> ShowS |

sinDouble :: Double -> Double Source #

sinFloat :: Float -> Float Source #

sinhDouble :: Double -> Double Source #

sinhFloat :: Float -> Float Source #

sqrtDouble :: Double -> Double Source #

sqrtFloat :: Float -> Float Source #

stgDoubleToWord64 :: Double# -> Word# Source #

stgFloatToWord32 :: Float# -> Word32# Source #

stgWord32ToFloat :: Word32# -> Float# Source #

stgWord64ToDouble :: Word# -> Double# Source #

tanDouble :: Double -> Double Source #

tanFloat :: Float -> Float Source #

tanhDouble :: Double -> Double Source #

tanhFloat :: Float -> Float Source #

timesDouble :: Double -> Double -> Double Source #

timesFloat :: Float -> Float -> Float Source #

word2Double :: Word -> Double Source #

word2Float :: Word -> Float Source #

data FFFormat Source #

Constructors

FFExponent |
FFFixed |
FFGeneric |

data Float Source #

Single-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type.

Constructors

F# Float# |

#### Instances

Instances details

Data Float Source # | Since: base-4.0.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Float -> c Float Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Float Source # toConstr :: Float -> Constr Source # dataTypeOf :: Float -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Float) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Float) Source # gmapT :: (forall b. Data b => b -> b) -> Float -> Float Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Float -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Float -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Float -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Float -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Float -> m Float Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Float -> m Float Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Float -> m Float Source #
Storable Float Source # | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Float -> Int Source # alignment :: Float -> Int Source # peekElemOff :: Ptr Float -> Int -> IO Float Source # pokeElemOff :: Ptr Float -> Int -> Float -> IO () Source # peekByteOff :: Ptr b -> Int -> IO Float Source # pokeByteOff :: Ptr b -> Int -> Float -> IO () Source # peek :: Ptr Float -> IO Float Source # poke :: Ptr Float -> Float -> IO () Source #
Enum Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods succ :: Float -> Float Source # pred :: Float -> Float Source # toEnum :: Int -> Float Source # fromEnum :: Float -> Int Source # enumFrom :: Float -> [Float] Source # enumFromThen :: Float -> Float -> [Float] Source # enumFromTo :: Float -> Float -> [Float] Source # enumFromThenTo :: Float -> Float -> Float -> [Float] Source #
Floating Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods pi :: Float Source # exp :: Float -> Float Source # log :: Float -> Float Source # sqrt :: Float -> Float Source # (**) :: Float -> Float -> Float Source # logBase :: Float -> Float -> Float Source # sin :: Float -> Float Source # cos :: Float -> Float Source # tan :: Float -> Float Source # asin :: Float -> Float Source # acos :: Float -> Float Source # atan :: Float -> Float Source # sinh :: Float -> Float Source # cosh :: Float -> Float Source # tanh :: Float -> Float Source # asinh :: Float -> Float Source # acosh :: Float -> Float Source # atanh :: Float -> Float Source # log1p :: Float -> Float Source # expm1 :: Float -> Float Source # log1pexp :: Float -> Float Source # log1mexp :: Float -> Float Source #
RealFloat Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods floatRadix :: Float -> Integer Source # floatDigits :: Float -> Int Source # floatRange :: Float -> (Int, Int) Source # decodeFloat :: Float -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Float Source # exponent :: Float -> Int Source # significand :: Float -> Float Source # scaleFloat :: Int -> Float -> Float Source # isNaN :: Float -> Bool Source # isInfinite :: Float -> Bool Source # isDenormalized :: Float -> Bool Source # isNegativeZero :: Float -> Bool Source # isIEEE :: Float -> Bool Source # atan2 :: Float -> Float -> Float Source #
Num Float Source # | Note that due to the presence of `NaN`, not all elements of `Float` have an additive inverse.
    >>> 0/0 + (negate 0/0 :: Float)
    NaN
Also note that due to the presence of -0, `Float`'s `Num` instance doesn't have an additive identity
    >>> 0 + (-0 :: Float)
    0.0
Since: base-2.1
Instance details Defined in GHC.Float Methods (+) :: Float -> Float -> Float Source # (-) :: Float -> Float -> Float Source # (*) :: Float -> Float -> Float Source # negate :: Float -> Float Source # abs :: Float -> Float Source # signum :: Float -> Float Source # fromInteger :: Integer -> Float Source #
Read Float Source # | Since: base-2.1
Instance details Defined in GHC.Read Methods readsPrec :: Int -> ReadS Float Source # readList :: ReadS [Float] Source # readPrec :: ReadPrec Float Source # readListPrec :: ReadPrec [Float] Source #
Fractional Float Source # | Note that due to the presence of `NaN`, not all elements of `Float` have an multiplicative inverse.
    >>> 0/0 * (recip 0/0 :: Float)
    NaN
Since: base-2.1
Instance details Defined in GHC.Float Methods (/) :: Float -> Float -> Float Source # recip :: Float -> Float Source # fromRational :: Rational -> Float Source #
Real Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods toRational :: Float -> Rational Source #
RealFrac Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods properFraction :: Integral b => Float -> (b, Float) Source # truncate :: Integral b => Float -> b Source # round :: Integral b => Float -> b Source # ceiling :: Integral b => Float -> b Source # floor :: Integral b => Float -> b Source #
Show Float Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods showsPrec :: Int -> Float -> ShowS Source # show :: Float -> String Source # showList :: [Float] -> ShowS Source #
PrintfArg Float Source # | Since: base-2.1
Instance details Defined in Text.Printf Methods formatArg :: Float -> FieldFormatter Source # parseFormat :: Float -> ModifierParser Source #
Eq Float | Note that due to the presence of `NaN`, `Float`'s `Eq` instance does not satisfy reflexivity.
    >>> 0/0 == (0/0 :: Float)
    False
Also note that `Float`'s `Eq` instance does not satisfy extensionality:
    >>> 0 == (-0 :: Float)
    True
    >>> recip 0 == recip (-0 :: Float)
    False
Instance details Defined in GHC.Classes Methods (==) :: Float -> Float -> Bool Source # (/=) :: Float -> Float -> Bool Source #
Ord Float | Note that due to the presence of `NaN`, `Float`'s `Ord` instance does not satisfy reflexivity.
    >>> 0/0 <= (0/0 :: Float)
    False
Also note that, due to the same, `Ord`'s operator interactions are not respected by `Float`'s instance:
    >>> (0/0 :: Float) > 1
    False
    >>> compare (0/0 :: Float) 1
    GT
Instance details Defined in GHC.Classes Methods compare :: Float -> Float -> Ordering Source # (<) :: Float -> Float -> Bool Source # (<=) :: Float -> Float -> Bool Source # (>) :: Float -> Float -> Bool Source # (>=) :: Float -> Float -> Bool Source # max :: Float -> Float -> Float Source # min :: Float -> Float -> Float Source #
Generic1 (URec Float :: k -> Type) Source # |
Instance details Defined in GHC.Generics Associated Types type Rep1 (URec Float) :: k -> Type Source # Methods from1 :: forall (a :: k0). URec Float a -> Rep1 (URec Float) a Source # to1 :: forall (a :: k0). Rep1 (URec Float) a -> URec Float a Source #
Foldable (UFloat :: TYPE LiftedRep -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Foldable Methods fold :: Monoid m => UFloat m -> m Source # foldMap :: Monoid m => (a -> m) -> UFloat a -> m Source # foldMap' :: Monoid m => (a -> m) -> UFloat a -> m Source # foldr :: (a -> b -> b) -> b -> UFloat a -> b Source # foldr' :: (a -> b -> b) -> b -> UFloat a -> b Source # foldl :: (b -> a -> b) -> b -> UFloat a -> b Source # foldl' :: (b -> a -> b) -> b -> UFloat a -> b Source # foldr1 :: (a -> a -> a) -> UFloat a -> a Source # foldl1 :: (a -> a -> a) -> UFloat a -> a Source # toList :: UFloat a -> [a] Source # null :: UFloat a -> Bool Source # length :: UFloat a -> Int Source # elem :: Eq a => a -> UFloat a -> Bool Source # maximum :: Ord a => UFloat a -> a Source # minimum :: Ord a => UFloat a -> a Source # sum :: Num a => UFloat a -> a Source # product :: Num a => UFloat a -> a Source #
Traversable (UFloat :: Type -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> UFloat a -> f (UFloat b) Source # sequenceA :: Applicative f => UFloat (f a) -> f (UFloat a) Source # mapM :: Monad m => (a -> m b) -> UFloat a -> m (UFloat b) Source # sequence :: Monad m => UFloat (m a) -> m (UFloat a) Source #
Functor (URec Float :: TYPE LiftedRep -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods fmap :: (a -> b) -> URec Float a -> URec Float b Source # (<$) :: a -> URec Float b -> URec Float a Source #
Generic (URec Float p) Source # |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Float p) :: Type -> Type Source # Methods from :: URec Float p -> Rep (URec Float p) x Source # to :: Rep (URec Float p) x -> URec Float p Source #
Show (URec Float p) Source # |
Instance details Defined in GHC.Generics Methods showsPrec :: Int -> URec Float p -> ShowS Source # show :: URec Float p -> String Source # showList :: [URec Float p] -> ShowS Source #
Eq (URec Float p) Source # |
Instance details Defined in GHC.Generics Methods (==) :: URec Float p -> URec Float p -> Bool Source # (/=) :: URec Float p -> URec Float p -> Bool Source #
Ord (URec Float p) Source # |
Instance details Defined in GHC.Generics Methods compare :: URec Float p -> URec Float p -> Ordering Source # (<) :: URec Float p -> URec Float p -> Bool Source # (<=) :: URec Float p -> URec Float p -> Bool Source # (>) :: URec Float p -> URec Float p -> Bool Source # (>=) :: URec Float p -> URec Float p -> Bool Source # max :: URec Float p -> URec Float p -> URec Float p Source # min :: URec Float p -> URec Float p -> URec Float p Source #
data URec Float (p :: k) Source # | Used for marking occurrences of `Float#` Since: base-4.9.0.0
Instance details Defined in GHC.Generics data URec Float (p :: k) = UFloat { uFloat# :: Float# }
type Rep1 (URec Float :: k -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep1 (URec Float :: k -> Type) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UFloat" 'PrefixI 'True) (S1 ('MetaSel ('Just "uFloat#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UFloat :: k -> Type)))
type Rep (URec Float p) Source # |
Instance details Defined in GHC.Generics type Rep (URec Float p) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UFloat" 'PrefixI 'True) (S1 ('MetaSel ('Just "uFloat#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UFloat :: Type -> Type)))

data Double Source #

Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type.

Constructors

D# Double# |

#### Instances

Instances details

Data Double Source # | Since: base-4.0.0.0
Instance details Defined in Data.Data Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Double -> c Double Source # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Double Source # toConstr :: Double -> Constr Source # dataTypeOf :: Double -> DataType Source # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Double) Source # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Double) Source # gmapT :: (forall b. Data b => b -> b) -> Double -> Double Source # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Double -> r Source # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Double -> r Source # gmapQ :: (forall d. Data d => d -> u) -> Double -> [u] Source # gmapQi :: Int -> (forall d. Data d => d -> u) -> Double -> u Source # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Double -> m Double Source # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Double -> m Double Source # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Double -> m Double Source #
Storable Double Source # | Since: base-2.1
Instance details Defined in Foreign.Storable Methods sizeOf :: Double -> Int Source # alignment :: Double -> Int Source # peekElemOff :: Ptr Double -> Int -> IO Double Source # pokeElemOff :: Ptr Double -> Int -> Double -> IO () Source # peekByteOff :: Ptr b -> Int -> IO Double Source # pokeByteOff :: Ptr b -> Int -> Double -> IO () Source # peek :: Ptr Double -> IO Double Source # poke :: Ptr Double -> Double -> IO () Source #
Enum Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods succ :: Double -> Double Source # pred :: Double -> Double Source # toEnum :: Int -> Double Source # fromEnum :: Double -> Int Source # enumFrom :: Double -> [Double] Source # enumFromThen :: Double -> Double -> [Double] Source # enumFromTo :: Double -> Double -> [Double] Source # enumFromThenTo :: Double -> Double -> Double -> [Double] Source #
Floating Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods pi :: Double Source # exp :: Double -> Double Source # log :: Double -> Double Source # sqrt :: Double -> Double Source # (**) :: Double -> Double -> Double Source # logBase :: Double -> Double -> Double Source # sin :: Double -> Double Source # cos :: Double -> Double Source # tan :: Double -> Double Source # asin :: Double -> Double Source # acos :: Double -> Double Source # atan :: Double -> Double Source # sinh :: Double -> Double Source # cosh :: Double -> Double Source # tanh :: Double -> Double Source # asinh :: Double -> Double Source # acosh :: Double -> Double Source # atanh :: Double -> Double Source # log1p :: Double -> Double Source # expm1 :: Double -> Double Source # log1pexp :: Double -> Double Source # log1mexp :: Double -> Double Source #
RealFloat Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods floatRadix :: Double -> Integer Source # floatDigits :: Double -> Int Source # floatRange :: Double -> (Int, Int) Source # decodeFloat :: Double -> (Integer, Int) Source # encodeFloat :: Integer -> Int -> Double Source # exponent :: Double -> Int Source # significand :: Double -> Double Source # scaleFloat :: Int -> Double -> Double Source # isNaN :: Double -> Bool Source # isInfinite :: Double -> Bool Source # isDenormalized :: Double -> Bool Source # isNegativeZero :: Double -> Bool Source # isIEEE :: Double -> Bool Source # atan2 :: Double -> Double -> Double Source #
Num Double Source # | Note that due to the presence of `NaN`, not all elements of `Double` have an additive inverse.
    >>> 0/0 + (negate 0/0 :: Double)
    NaN
Also note that due to the presence of -0, `Double`'s `Num` instance doesn't have an additive identity
    >>> 0 + (-0 :: Double)
    0.0
Since: base-2.1
Instance details Defined in GHC.Float Methods (+) :: Double -> Double -> Double Source # (-) :: Double -> Double -> Double Source # (*) :: Double -> Double -> Double Source # negate :: Double -> Double Source # abs :: Double -> Double Source # signum :: Double -> Double Source # fromInteger :: Integer -> Double Source #
Read Double Source # | Since: base-2.1
Instance details Defined in GHC.Read Methods readsPrec :: Int -> ReadS Double Source # readList :: ReadS [Double] Source # readPrec :: ReadPrec Double Source # readListPrec :: ReadPrec [Double] Source #
Fractional Double Source # | Note that due to the presence of `NaN`, not all elements of `Double` have an multiplicative inverse.
    >>> 0/0 * (recip 0/0 :: Double)
    NaN
Since: base-2.1
Instance details Defined in GHC.Float Methods (/) :: Double -> Double -> Double Source # recip :: Double -> Double Source # fromRational :: Rational -> Double Source #
Real Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods toRational :: Double -> Rational Source #
RealFrac Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods properFraction :: Integral b => Double -> (b, Double) Source # truncate :: Integral b => Double -> b Source # round :: Integral b => Double -> b Source # ceiling :: Integral b => Double -> b Source # floor :: Integral b => Double -> b Source #
Show Double Source # | Since: base-2.1
Instance details Defined in GHC.Float Methods showsPrec :: Int -> Double -> ShowS Source # show :: Double -> String Source # showList :: [Double] -> ShowS Source #
PrintfArg Double Source # | Since: base-2.1
Instance details Defined in Text.Printf Methods formatArg :: Double -> FieldFormatter Source # parseFormat :: Double -> ModifierParser Source #
Eq Double | Note that due to the presence of `NaN`, `Double`'s `Eq` instance does not satisfy reflexivity.
    >>> 0/0 == (0/0 :: Double)
    False
Also note that `Double`'s `Eq` instance does not satisfy substitutivity:
    >>> 0 == (-0 :: Double)
    True
    >>> recip 0 == recip (-0 :: Double)
    False
Instance details Defined in GHC.Classes Methods (==) :: Double -> Double -> Bool Source # (/=) :: Double -> Double -> Bool Source #
Ord Double | Note that due to the presence of `NaN`, `Double`'s `Ord` instance does not satisfy reflexivity.
    >>> 0/0 <= (0/0 :: Double)
    False
Also note that, due to the same, `Ord`'s operator interactions are not respected by `Double`'s instance:
    >>> (0/0 :: Double) > 1
    False
    >>> compare (0/0 :: Double) 1
    GT
Instance details Defined in GHC.Classes Methods compare :: Double -> Double -> Ordering Source # (<) :: Double -> Double -> Bool Source # (<=) :: Double -> Double -> Bool Source # (>) :: Double -> Double -> Bool Source # (>=) :: Double -> Double -> Bool Source # max :: Double -> Double -> Double Source # min :: Double -> Double -> Double Source #
Generic1 (URec Double :: k -> Type) Source # |
Instance details Defined in GHC.Generics Associated Types type Rep1 (URec Double) :: k -> Type Source # Methods from1 :: forall (a :: k0). URec Double a -> Rep1 (URec Double) a Source # to1 :: forall (a :: k0). Rep1 (URec Double) a -> URec Double a Source #
Foldable (UDouble :: TYPE LiftedRep -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Foldable Methods fold :: Monoid m => UDouble m -> m Source # foldMap :: Monoid m => (a -> m) -> UDouble a -> m Source # foldMap' :: Monoid m => (a -> m) -> UDouble a -> m Source # foldr :: (a -> b -> b) -> b -> UDouble a -> b Source # foldr' :: (a -> b -> b) -> b -> UDouble a -> b Source # foldl :: (b -> a -> b) -> b -> UDouble a -> b Source # foldl' :: (b -> a -> b) -> b -> UDouble a -> b Source # foldr1 :: (a -> a -> a) -> UDouble a -> a Source # foldl1 :: (a -> a -> a) -> UDouble a -> a Source # toList :: UDouble a -> [a] Source # null :: UDouble a -> Bool Source # length :: UDouble a -> Int Source # elem :: Eq a => a -> UDouble a -> Bool Source # maximum :: Ord a => UDouble a -> a Source # minimum :: Ord a => UDouble a -> a Source # sum :: Num a => UDouble a -> a Source # product :: Num a => UDouble a -> a Source #
Traversable (UDouble :: Type -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in Data.Traversable Methods traverse :: Applicative f => (a -> f b) -> UDouble a -> f (UDouble b) Source # sequenceA :: Applicative f => UDouble (f a) -> f (UDouble a) Source # mapM :: Monad m => (a -> m b) -> UDouble a -> m (UDouble b) Source # sequence :: Monad m => UDouble (m a) -> m (UDouble a) Source #
Functor (URec Double :: TYPE LiftedRep -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods fmap :: (a -> b) -> URec Double a -> URec Double b Source # (<$) :: a -> URec Double b -> URec Double a Source #
Generic (URec Double p) Source # |
Instance details Defined in GHC.Generics Associated Types type Rep (URec Double p) :: Type -> Type Source # Methods from :: URec Double p -> Rep (URec Double p) x Source # to :: Rep (URec Double p) x -> URec Double p Source #
Show (URec Double p) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods showsPrec :: Int -> URec Double p -> ShowS Source # show :: URec Double p -> String Source # showList :: [URec Double p] -> ShowS Source #
Eq (URec Double p) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods (==) :: URec Double p -> URec Double p -> Bool Source # (/=) :: URec Double p -> URec Double p -> Bool Source #
Ord (URec Double p) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics Methods compare :: URec Double p -> URec Double p -> Ordering Source # (<) :: URec Double p -> URec Double p -> Bool Source # (<=) :: URec Double p -> URec Double p -> Bool Source # (>) :: URec Double p -> URec Double p -> Bool Source # (>=) :: URec Double p -> URec Double p -> Bool Source # max :: URec Double p -> URec Double p -> URec Double p Source # min :: URec Double p -> URec Double p -> URec Double p Source #
data URec Double (p :: k) Source # | Used for marking occurrences of `Double#` Since: base-4.9.0.0
Instance details Defined in GHC.Generics data URec Double (p :: k) = UDouble { uDouble# :: Double# }
type Rep1 (URec Double :: k -> Type) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep1 (URec Double :: k -> Type) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UDouble" 'PrefixI 'True) (S1 ('MetaSel ('Just "uDouble#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UDouble :: k -> Type)))
type Rep (URec Double p) Source # | Since: base-4.9.0.0
Instance details Defined in GHC.Generics type Rep (URec Double p) = D1 ('MetaData "URec" "GHC.Generics" "base" 'False) (C1 ('MetaCons "UDouble" 'PrefixI 'True) (S1 ('MetaSel ('Just "uDouble#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (UDouble :: Type -> Type)))

data Float# :: TYPE 'FloatRep Source #

data Double# :: TYPE 'DoubleRep Source #

double2Int :: Double -> Int Source #

int2Double :: Int -> Double Source #

float2Int :: Float -> Int Source #

int2Float :: Int -> Float Source #

# Monomorphic equality operators

See GHC.Classes#matching_overloaded_methods_in_rules

eqFloat :: Float -> Float -> Bool Source #

eqDouble :: Double -> Double -> Bool Source #

# Orphan instances

Enum Double Source # | Since: base-2.1
Instance details Methods succ :: Double -> Double Source # pred :: Double -> Double Source # toEnum :: Int -> Double Source # fromEnum :: Double -> Int Source # enumFrom :: Double -> [Double] Source # enumFromThen :: Double -> Double -> [Double] Source # enumFromTo :: Double -> Double -> [Double] Source # enumFromThenTo :: Double -> Double -> Double -> [Double] Source #
Enum Float Source # | Since: base-2.1
Instance details Methods succ :: Float -> Float Source # pred :: Float -> Float Source # toEnum :: Int -> Float Source # fromEnum :: Float -> Int Source # enumFrom :: Float -> [Float] Source # enumFromThen :: Float -> Float -> [Float] Source # enumFromTo :: Float -> Float -> [Float] Source # enumFromThenTo :: Float -> Float -> Float -> [Float] Source #
Num Double Source # | Note that due to the presence of `NaN`, not all elements of `Double` have an additive inverse.
    >>> 0/0 + (negate 0/0 :: Double)
    NaN
Also note that due to the presence of -0, `Double`'s `Num` instance doesn't have an additive identity
    >>> 0 + (-0 :: Double)
    0.0
Since: base-2.1
Instance details Methods (+) :: Double -> Double -> Double Source # (-) :: Double -> Double -> Double Source # (*) :: Double -> Double -> Double Source # negate :: Double -> Double Source # abs :: Double -> Double Source # signum :: Double -> Double Source # fromInteger :: Integer -> Double Source #
Num Float Source # | Note that due to the presence of `NaN`, not all elements of `Float` have an additive inverse.
    >>> 0/0 + (negate 0/0 :: Float)
    NaN
Also note that due to the presence of -0, `Float`'s `Num` instance doesn't have an additive identity
    >>> 0 + (-0 :: Float)
    0.0
Since: base-2.1
Instance details Methods (+) :: Float -> Float -> Float Source # (-) :: Float -> Float -> Float Source # (*) :: Float -> Float -> Float Source # negate :: Float -> Float Source # abs :: Float -> Float Source # signum :: Float -> Float Source # fromInteger :: Integer -> Float Source #
Fractional Double Source # | Note that due to the presence of `NaN`, not all elements of `Double` have an multiplicative inverse.
    >>> 0/0 * (recip 0/0 :: Double)
    NaN
Since: base-2.1
Instance details Methods (/) :: Double -> Double -> Double Source # recip :: Double -> Double Source # fromRational :: Rational -> Double Source #
Fractional Float Source # | Note that due to the presence of `NaN`, not all elements of `Float` have an multiplicative inverse.
    >>> 0/0 * (recip 0/0 :: Float)
    NaN
Since: base-2.1
Instance details Methods (/) :: Float -> Float -> Float Source # recip :: Float -> Float Source # fromRational :: Rational -> Float Source #
Real Double Source # | Since: base-2.1
Instance details Methods toRational :: Double -> Rational Source #
Real Float Source # | Since: base-2.1
Instance details Methods toRational :: Float -> Rational Source #
RealFrac Double Source # | Since: base-2.1
Instance details Methods properFraction :: Integral b => Double -> (b, Double) Source # truncate :: Integral b => Double -> b Source # round :: Integral b => Double -> b Source # ceiling :: Integral b => Double -> b Source # floor :: Integral b => Double -> b Source #
RealFrac Float Source # | Since: base-2.1
Instance details Methods properFraction :: Integral b => Float -> (b, Float) Source # truncate :: Integral b => Float -> b Source # round :: Integral b => Float -> b Source # ceiling :: Integral b => Float -> b Source # floor :: Integral b => Float -> b Source #
Show Double Source # | Since: base-2.1
Instance details Methods showsPrec :: Int -> Double -> ShowS Source # show :: Double -> String Source # showList :: [Double] -> ShowS Source #
Show Float Source # | Since: base-2.1
Instance details Methods showsPrec :: Int -> Float -> ShowS Source # show :: Float -> String Source # showList :: [Float] -> ShowS Source #