base-4.9.1.0: Basic libraries

Copyright (c) The University of Glasgow 2002 BSD-style (see the file libraries/base/LICENSE) libraries@haskell.org provisional portable Trustworthy Haskell2010

Numeric

Contents

Description

Odds and ends, mostly functions for reading and showing RealFloat-like kind of values.

Synopsis

# Showing

Arguments

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

Converts a possibly-negative Real value to a string.

showIntAtBase :: (Integral a, Show a) => a -> (Int -> Char) -> a -> ShowS Source #

Shows a non-negative Integral number using the base specified by the first argument, and the character representation specified by the second.

showInt :: Integral a => a -> ShowS Source #

Show non-negative Integral numbers in base 10.

showHex :: (Integral a, Show a) => a -> ShowS Source #

Show non-negative Integral numbers in base 16.

showOct :: (Integral a, Show a) => a -> ShowS Source #

Show non-negative Integral numbers in base 8.

showEFloat :: RealFloat a => Maybe Int -> a -> ShowS Source #

Show a signed RealFloat value using scientific (exponential) notation (e.g. 2.45e2, 1.5e-3).

In the call showEFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown.

showFFloat :: RealFloat a => Maybe Int -> a -> ShowS Source #

Show a signed RealFloat value using standard decimal notation (e.g. 245000, 0.0015).

In the call showFFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown.

showGFloat :: RealFloat a => Maybe Int -> a -> ShowS Source #

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

In the call showGFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown.

showFFloatAlt :: RealFloat a => Maybe Int -> a -> ShowS Source #

Show a signed RealFloat value using standard decimal notation (e.g. 245000, 0.0015).

This behaves as showFFloat, except that a decimal point is always guaranteed, even if not needed.

Since: 4.7.0.0

showGFloatAlt :: RealFloat a => Maybe Int -> a -> ShowS Source #

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

This behaves as showFFloat, except that a decimal point is always guaranteed, even if not needed.

Since: 4.7.0.0

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.

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

# Reading

NB: readInt is the 'dual' of showIntAtBase, and readDec is the dual' of showInt. The inconsistent naming is a historical accident.

readSigned :: Real a => ReadS a -> ReadS a Source #

Reads a signed Real value, given a reader for an unsigned value.

Arguments

 :: Num a => a the base -> (Char -> Bool) a predicate distinguishing valid digits in this base -> (Char -> Int) a function converting a valid digit character to an Int -> ReadS a

Reads an unsigned Integral value in an arbitrary base.

readDec :: (Eq a, Num a) => ReadS a Source #

Read an unsigned number in decimal notation.

readOct :: (Eq a, Num a) => ReadS a Source #

Read an unsigned number in octal notation.

readHex :: (Eq a, Num a) => ReadS a Source #

Read an unsigned number in hexadecimal notation. Both upper or lower case letters are allowed.

Reads an unsigned RealFrac value, expressed in decimal scientific notation.

Reads a non-empty string of decimal digits.

# Miscellaneous

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

Converts a Rational value into any type in class RealFloat.

class Fractional a => Floating a where Source #

Trigonometric and hyperbolic functions and related functions.

Minimal complete definition

Methods

pi :: a Source #

exp, log, sqrt :: a -> a Source #

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

sin, cos, tan :: a -> a Source #

asin, acos, atan :: a -> a Source #

sinh, cosh, tanh :: a -> a Source #

asinh, acosh, 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: 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: 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: 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: 4.9.0.0

Instances

 # Methods # Methods # Methods # Methods RealFloat a => Floating (Complex a) # Methodsexp :: 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 # Floating a => Floating (Identity a) # Methodsexp :: 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 # Floating a => Floating (Const k a b) # Methodspi :: Const k a b Source #exp :: Const k a b -> Const k a b Source #log :: Const k a b -> Const k a b Source #sqrt :: Const k a b -> Const k a b Source #(**) :: Const k a b -> Const k a b -> Const k a b Source #logBase :: Const k a b -> Const k a b -> Const k a b Source #sin :: Const k a b -> Const k a b Source #cos :: Const k a b -> Const k a b Source #tan :: Const k a b -> Const k a b Source #asin :: Const k a b -> Const k a b Source #acos :: Const k a b -> Const k a b Source #atan :: Const k a b -> Const k a b Source #sinh :: Const k a b -> Const k a b Source #cosh :: Const k a b -> Const k a b Source #tanh :: Const k a b -> Const k a b Source #asinh :: Const k a b -> Const k a b Source #acosh :: Const k a b -> Const k a b Source #atanh :: Const k a b -> Const k a b Source #log1p :: Const k a b -> Const k a b Source #expm1 :: Const k a b -> Const k a b Source #log1pexp :: Const k a b -> Const k a b Source #log1mexp :: Const k a b -> Const k a b Source #