<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>Data.Number.Dif</title><link href="ocean.css" rel="stylesheet" type="text/css" title="Ocean" /><script src="haddock-util.js" type="text/javascript"></script><script type="text/javascript">//<![CDATA[ window.onload = function () {pageLoad();setSynopsis("mini_Data-Number-Dif.html");}; //]]> </script></head><body><div id="package-header"><ul class="links" id="page-menu"><li><a href="src/Data-Number-Dif.html">Source</a></li><li><a href="index.html">Contents</a></li><li><a href="doc-index.html">Index</a></li></ul><p class="caption">numbers-3000.2.0.0: Various number types</p></div><div id="content"><div id="module-header"><table class="info"><tr><th>Safe Haskell</th><td>Safe-Infered</td></tr></table><p class="caption">Data.Number.Dif</p></div><div id="description"><p class="caption">Description</p><div class="doc"><p>The <code><a href="Data-Number.html#t:Dif">Dif</a></code> module contains a data type, <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code>, that allows for automatic forward differentiation. </p><p>All the ideas are from Jerzy Karczmarczuk's work, see <a href="http://users.info.unicaen.fr/~karczma/arpap/diffalg.pdf">http://users.info.unicaen.fr/~karczma/arpap/diffalg.pdf</a>. </p><p>A simple example, if we define </p><pre> foo x = x*x </pre><p>then the function </p><pre> foo' = deriv foo </pre><p>will behave as if its body was 2*x. </p></div></div><div id="synopsis"><p id="control.syn" class="caption expander" onclick="toggleSection('syn')">Synopsis</p><ul id="section.syn" class="hide" onclick="toggleSection('syn')"><li class="src short"><span class="keyword">data</span> <a href="#t:Dif">Dif</a> a</li><li class="src short"><a href="#v:val">val</a> :: <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> a</li><li class="src short"><a href="#v:df">df</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a</li><li class="src short"><a href="#v:mkDif">mkDif</a> :: a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a</li><li class="src short"><a href="#v:dCon">dCon</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a => a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a</li><li class="src short"><a href="#v:dVar">dVar</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a</li><li class="src short"><a href="#v:deriv">deriv</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> b, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> b) => (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> b) -> a -> b</li><li class="src short"><a href="#v:unDif">unDif</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> b) -> a -> b</li></ul></div><div id="interface"><h1>Documentation</h1><div class="top"><p class="src"><span class="keyword">data</span> <a name="t:Dif" class="def">Dif</a> a <a href="src/Data-Number-Dif.html#Dif" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> type is the type of differentiable numbers. It's an instance of all the usual numeric classes. The computed derivative of a function is is correct except where the function is discontinuous, at these points the derivative should be a Dirac pulse, but it isn't. </p><p>The <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> numbers are printed with a trailing ~~ to indicate that there is a "tail" of derivatives. </p></div><div class="subs instances"><p id="control.i:Dif" class="caption collapser" onclick="toggleSection('i:Dif')">Instances</p><div id="section.i:Dif" class="show"><table><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Floating">Floating</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Floating">Floating</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Fractional">Fractional</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Fractional">Fractional</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src">(<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Ord.html#t:Ord">Ord</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Read.html#t:Read">Read</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Read.html#t:Read">Read</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Real">Real</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Real">Real</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:RealFloat">RealFloat</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:RealFloat">RealFloat</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:RealFrac">RealFrac</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:RealFrac">RealFrac</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr><tr><td class="src"><a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Show.html#t:Show">Show</a> a => <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Text-Show.html#t:Show">Show</a> (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a)</td><td class="doc empty"> </td></tr></table></div></div></div><div class="top"><p class="src"><a name="v:val" class="def">val</a> :: <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> a<a href="src/Data-Number-Dif.html#val" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:val">val</a></code> function takes a <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> number back to a normal number, thus forgetting about all the derivatives. </p></div></div><div class="top"><p class="src"><a name="v:df" class="def">df</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a<a href="src/Data-Number-Dif.html#df" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:df">df</a></code> takes a <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> number and returns its first derivative. The function can be iterated to to get higher derivaties. </p></div></div><div class="top"><p class="src"><a name="v:mkDif" class="def">mkDif</a> :: a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a<a href="src/Data-Number-Dif.html#mkDif" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:mkDif">mkDif</a></code> takes a value and <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> value and makes a <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> number that has the given value as its normal value, and the <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> number as its derivatives. </p></div></div><div class="top"><p class="src"><a name="v:dCon" class="def">dCon</a> :: <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a => a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a<a href="src/Data-Number-Dif.html#dCon" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:dCon">dCon</a></code> function turns a normal number into a <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> number with the same value. Not that numeric literals do not need an explicit conversion due to the normal Haskell overloading of literals. </p></div></div><div class="top"><p class="src"><a name="v:dVar" class="def">dVar</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> a<a href="src/Data-Number-Dif.html#dVar" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:dVar">dVar</a></code> function turns a number into a variable number. This is the number with with respect to which the derivaticve is computed. </p></div></div><div class="top"><p class="src"><a name="v:deriv" class="def">deriv</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> b, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> b) => (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> b) -> a -> b<a href="src/Data-Number-Dif.html#deriv" class="link">Source</a></p><div class="doc"><p>The <code><a href="Data-Number-Dif.html#v:deriv">deriv</a></code> function is a simple utility to take the derivative of a (single argument) function. It is simply defined as </p><pre> deriv f = val . df . f . dVar </pre></div></div><div class="top"><p class="src"><a name="v:unDif" class="def">unDif</a> :: (<a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Prelude.html#t:Num">Num</a> a, <a href="/usr/share/doc/ghc/html/libraries/base-4.5.0.0/Data-Eq.html#t:Eq">Eq</a> a) => (<a href="Data-Number-Dif.html#t:Dif">Dif</a> a -> <a href="Data-Number-Dif.html#t:Dif">Dif</a> b) -> a -> b<a href="src/Data-Number-Dif.html#unDif" class="link">Source</a></p><div class="doc"><p>Convert a <code><a href="Data-Number-Dif.html#t:Dif">Dif</a></code> function to an ordinary function. </p></div></div></div></div><div id="footer"><p>Produced by <a href="http://www.haskell.org/haddock/">Haddock</a> version 2.10.0</p></div></body></html>