@hackage ad1.2.0
Automatic Differentiation
Categories
License
BSD-3-Clause
Maintainer
ekmett@gmail.com
Links
Versions
Installation
Dependencies (7)
- array >=0.2 && <0.4
- base >=4 && <5
- comonad >=1.1 && <1.2
- containers >=0.2 && <0.5
- data-reify >=0.6 && <0.7
- free >=1.8 && <1.9 Show all…
Dependents (37)
@hackage/dvda, @hackage/srtree, @hackage/grenade, @hackage/penrose, @hackage/neural, @hackage/generic-random, Show all…
Package Flags
templatehaskell24(off by default)
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 byNumeric.AD
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 answerWithlets the user supply a function to blend the input with the outputFis a version of the base function lifted to return aTraversable(orFunctor) resultsmeans the function returns all higher derivatives in a list or f-branchingStreamTmeans 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
Converted
Streamto use the externalcomonadpackage
Changes since 0.44.5
Added Halley's method
Changes since 0.40.0
Fixed bug fix for
(/):: (Mode s, Fractional a) => AD s aImproved documentation
Regularized naming conventions
Exposed
Id, probe, and lower methods viaNumeric.AD.TypesRemoved monadic combinators
Retuned the
Mixedmode jacobian calculations to only require aFunctor-based result.Added unsafe variadic
vgrad,vgrad', andvgradscombinators