{-# LANGUAGE BangPatterns, FlexibleInstances, TypeFamilies,

TypeSynonymInstances, GADTs #-}

-{-# OPTIONS_GHC -fno-warn-orphans #-}

+{-# OPTIONS_GHC -fno-warn-orphans -fno-warn-warnings-deprecations #-}

-- Module : Data.Attoparsec.ByteString.Char8

-- The syntax accepted by this parser is the same as for 'rational'.

--- /Note/: This function is almost ten times faster than 'rational',

--- but is slightly less accurate.

--- The 'Double' type supports about 16 decimal places of accuracy.

--- For 94.2% of numbers, this function and 'rational' give identical

--- results, but for the remaining 5.8%, this function loses precision

--- around the 15th decimal place. For 0.001% of numbers, this

--- function will lose precision at the 13th or 14th decimal place.

-- This function does not accept string representations of \"NaN\" or

-- The syntax accepted by this parser is the same as for 'rational'.

--- /Note/: This function is almost ten times faster than 'rational'.

--- On integral inputs, it gives perfectly accurate answers, and on

--- floating point inputs, it is slightly less accurate than

--- This function does not accept string representations of \"NaN\" or

+ -- This function does not accept string representations of \"NaN\" or

number = scientifically $ \s ->

let e = Sci.base10Exponent s

else D (Sci.toRealFloat s)

+{-# DEPRECATED number "Use 'scientific' instead." #-}

-- | Parse a scientific number.