    -- | Extra numeric functions - formatting and specialised conversions.
    module Numeric.Extra(
        module Numeric,
        showDP,
        intToDouble, intToFloat, floatToDouble, doubleToFloat
        ) where

    import Numeric

    ---------------------------------------------------------------------
    -- Data.String

    -- | Show a number to a fixed number of decimal places.
    --
    -- > showDP 4 pi == "3.1416"
    -- > showDP 0 pi == "3"
    -- > showDP 2 3  == "3.00"
    showDP :: RealFloat a => Int -> a -> String
    showDP n x = showFFloat (Just n) x ""

    ---------------------------------------------------------------------
    -- Numeric

    -- | Specialised numeric conversion, type restricted version of 'fromIntegral'.
    intToDouble :: Int -> Double
    intToDouble = fromIntegral

    -- | Specialised numeric conversion, type restricted version of 'fromIntegral'.
    intToFloat :: Int -> Float
    intToFloat = fromIntegral

    -- | Specialised numeric conversion, type restricted version of 'realToFrac'.
    floatToDouble :: Float -> Double
    floatToDouble = realToFrac

    -- | Specialised numeric conversion, type restricted version of 'realToFrac'.
    doubleToFloat :: Double -> Float
    doubleToFloat = realToFrac