-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Non IEEE-754 compliant compile-time floating-point optimisations
--   
--   The <a>Numeric.FastMath</a> module brings into scope many unsafe
--   <tt>RULES</tt> for <a>Float</a>s and <a>Double</a>s that can greatly
--   improve run time performance. It is roughly equivalent to gcc's
--   <tt>-ffast-math</tt> compiler flag. Optimisation (at least
--   <tt>-O1</tt>) must be enabled for any <tt>RULES</tt> to take effect.
--   
--   These rules are unsafe because they don't strictly adhere to the
--   IEEE-754 regulations and may subtly change the results of your numeric
--   computations. See the <a>README</a> on github for more details.
@package fast-math
@version 1.0.2


-- | IEEE 754 math makes a distrinction between -0.0 and +0.0. This module
--   contains RULES that ignore this distinction.
--   
--   Importing this module is similar to compiling with gcc's
--   <tt>-fno-signed-zeros</tt>.
module Numeric.FastMath.SignedZeros


-- | This module contains rules that break the way NaN is handled for
--   <a>Float</a> and <a>Double</a> types. Still, these rules should be
--   safe in the vast majority of applications.
--   
--   Importing this module is similar to compiling with gcc's
--   <tt>-fno-signaling-nans</tt> and <tt>-ffinite-math-only</tt>.
module Numeric.FastMath.NaN


-- | This module contains rewrite rules that may change the lowest order
--   bits of a computation. They take advantage of:
--   
--   <ul>
--   <li>distributivity</li>
--   <li>repeated addition/multiplication</li>
--   <li>exponentiation rules</li>
--   </ul>
--   
--   All of these RULES should be safe in the presence of <tt>NaN</tt> and
--   <tt>Infinity</tt>
--   
--   Importing this module is similar to compiling with gcc's
--   <tt>-funsafe-math-operations</tt>.
module Numeric.FastMath.Approximation


-- | This module loads all rewrite rules. Unless you know that some rules
--   will be unsafe for your application, this is the module you should
--   load. Importing this module is roughly equivalent to gcc's
--   <tt>-ffast-math</tt> compilation flag.
--   
--   The best way to figure out what optimizations these modules do is by
--   looking at the source code. RULES pragmas are surprisingly readable.
module Numeric.FastMath
