-- | Takes a constant, and a function as arguments. Returns a new
-- function representing the original function times the constant.
+--
+-- ==== __Examples__
+--
+-- >>> let square x = x**2
+-- >>> square 1
+-- 1.0
+-- >>> square 2
+-- 4.0
+-- >>> let f = cmult 2 square
+-- >>> f 1
+-- 2.0
+-- >>> f 2
+-- 8.0
+--
cmult :: Double -> (RealFunction a) -> (RealFunction a)
cmult coeff f = (*coeff) . f
--- | Takes a function f and an exponent n. Returns a new function,
--- f^n.
+-- | Takes a function @f@ and an exponent @n@. Returns a new function,
+-- @g@, defined by g(x) = (f(x))^n. This is /not/ @f@ composed
+-- with itself @n@ times.
+--
+-- ==== __Examples__
+--
+-- >>> let square x = x**2
+-- >>> square 2
+-- 4.0
+-- >>> let f = fexp square 3
+-- >>> f 2
+-- 64.0
+--
fexp :: (RealFunction a) -> Int -> (RealFunction a)
fexp f n
| n == 0 = (\_ -> 1)