The ad package
Forward-, reverse- and mixed- mode automatic differentiation combinators with a common API.
Type-level "branding" is used to both prevent the end user from confusing infinitesimals and to limit unsafe access to the implementation details of each Mode.
Each mode has a separate module full of combinators.
Numeric.AD.Mode.Forwardprovides basic forward-mode AD. It is good for computing simple derivatives.
Numeric.AD.Mode.Reverseuses benign side-effects to compute reverse-mode AD. It is good for computing gradients in one pass.
Numeric.AD.Mode.Sparsecomputes a sparse forward-mode AD tower. It is good for higher derivatives or large numbers of outputs.
Numeric.AD.Mode.Towercomputes a dense forward-mode AD tower useful for higher derivatives of single input functions.
Numeric.AD.Mode.Mixedcomputes using whichever mode or combination thereof is suitable to each individual combinator. This mode is the default, re-exported by
While not every mode can provide all operations, the following basic operations are supported, modified as appropriate by the suffixes below:
gradcomputes the gradient (partial derivatives) of a function at a point.
jacobiancomputes the Jacobian matrix of a function at a point.
diffcomputes the derivative of a function at a point.
ducomputes a directional derivative of a function at a point.
hessiancomputes the Hessian matrix (matrix of second partial derivatives) of a function at a point.
The following suffixes alter the meanings of the functions above as follows:
'-- also return the answer
Withlets the user supply a function to blend the input with the output
Fis a version of the base function lifted to return a
smeans the function returns all higher derivatives in a list or f-branching
Tmeans the result is transposed with respect to the traditional formulation.
0means that the resulting derivative list is padded with 0s at the end.
Changes since 1.1.0
Introduced a much faster topological sort into the reverse mode AD implementation by Anthony Cowley. This fixes a space leak and a stack overflow problem on very large (>2000 variable) problem sets.
Made bound calculations in reverse mode more strict.
Changes since 1.0.0
Changed the way
Showwas derived to comply with changes in instance resolution in ghc >= 7.0 && <= 7.1
Changes since 0.45.0
Streamto use the external
Changes since 0.44.5
Added Halley's method
Changes since 0.40.0
Fixed bug fix for
'(/)' :: (Mode s, Fractional a) => AD s a
Regularized naming conventions
Id, probe, and lower methods via
Removed monadic combinators
Mixedmode jacobian calculations to only require a
Added unsafe variadic
|Versions||0.12, 0.13, 0.15, 0.17, 0.18, 0.19, 0.20, 0.21, 0.22, 0.23, 0.24, 0.27, 0.28, 0.30.0, 0.31.0, 0.32.0, 0.33.0, 0.40, 0.40.1, 0.44.0, 0.44.1, 0.44.2, 0.44.3, 0.44.4, 0.45.0, 0.46.0, 0.46.1, 0.46.2, 0.47.0, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.1.0, 220.127.116.11, 1.1.1, 1.1.3, 1.2.0, 18.104.22.168, 22.214.171.124, 1.3, 126.96.36.199, 1.3.1, 1.4, 1.5, 188.8.131.52, 184.108.40.206, 3.0, 3.0.1, 3.1.1, 3.1.2, 3.1.3, 3.1.4, 3.2, 3.2.1, 3.2.2, 220.127.116.11, 3.3.1, 18.104.22.168, 3.4, 4.0, 22.214.171.124, 4.1, 4.2, 126.96.36.199, 4.2.1, 188.8.131.52, 4.2.2, 4.2.3, 4.2.4, 4.3, 4.3.1, 4.3.2, 184.108.40.206, 4.3.3, 4.3.4|
|Dependencies||array (>=0.2 && <0.4), base (==4.*), comonad (==1.1.*), containers (>=0.2 && <0.5), data-reify (==0.6.*), free (==1.8.*), template-haskell (>=2.4 && <2.6) [details]|
|Copyright||(c) Edward Kmett 2010-2011, (c) Barak Pearlmutter and Jeffrey Mark Siskind 2008-2009|
|Source repository||head: git clone git://github.com/ekmett/ad.git|
|Uploaded||Wed Aug 3 05:24:15 UTC 2011 by EdwardKmett|
|Distributions||LTSHaskell:4.3.4, NixOS:4.3.4, Stackage:4.3.4, Tumbleweed:4.3.3|
|Downloads||22199 total (472 in the last 30 days)|
|Rating||2.5 (votes: 3) [estimated by rule of succession]|
|Status||Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
For package maintainers and hackage trustees