# ad: Automatic Differentiation

[ bsd3, library, math ] [ Propose Tags ]

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.Forward provides basic forward-mode AD. It is good for computing simple derivatives.

• Numeric.AD.Mode.Reverse uses benign side-effects to compute reverse-mode AD. It is good for computing gradients in one pass.

• Numeric.AD.Mode.Sparse computes a sparse forward-mode AD tower. It is good for higher derivatives or large numbers of outputs.

• Numeric.AD.Mode.Tower computes a dense forward-mode AD tower useful for higher derivatives of single input functions.

• Numeric.AD.Mode.Mixed computes using whichever mode or combination thereof is suitable to each individual combinator. This mode is the default, re-exported by Numeric.AD

While not every mode can provide all operations, the following basic operations are supported, modified as appropriate by the suffixes below:

• grad computes the gradient (partial derivatives) of a function at a point.

• jacobian computes the Jacobian matrix of a function at a point.

• diff computes the derivative of a function at a point.

• du computes a directional derivative of a function at a point.

• hessian computes 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

• With lets the user supply a function to blend the input with the output

• F is a version of the base function lifted to return a Traversable (or Functor) result

• s means the function returns all higher derivatives in a list or f-branching Stream

• T means the result is transposed with respect to the traditional formulation.

• 0 means that the resulting derivative list is padded with 0s at the end.

Changes since 1.0.0

• Changed the way Show was derived to comply with changes in instance resolution in ghc >= 7.0 && <= 7.1

Changes since 0.45.0

• Converted Stream to use the external comonad package

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

• Improved documentation

• Regularized naming conventions

• Exposed Id, probe, and lower methods via Numeric.AD.Types

• Removed monadic combinators

• Retuned the Mixed mode jacobian calculations to only require a Functor-based result.

• Added unsafe variadic vgrad, vgrad', and vgrads combinators

## Flags

Automatic Flags
NameDescriptionDefault
templatehaskell24Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

## Downloads

#### Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

• No Candidates
Versions [RSS] 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, 1.1.0.1, 1.1.1, 1.1.3, 1.2.0, 1.2.0.1, 1.2.0.2, 1.3, 1.3.0.1, 1.3.1, 1.4, 1.5, 1.5.0.1, 1.5.0.2, 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, 3.3.0.1, 3.3.1, 3.3.1.1, 3.4, 4.0, 4.0.0.1, 4.1, 4.2, 4.2.0.1, 4.2.1, 4.2.1.1, 4.2.2, 4.2.3, 4.2.4, 4.3, 4.3.1, 4.3.2, 4.3.2.1, 4.3.3, 4.3.4, 4.3.5, 4.3.6, 4.4, 4.4.1, 4.5, 4.5.1, 4.5.2, 4.5.3, 4.5.4, 4.5.5, 4.5.6 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), template-haskell (>=2.4 && <2.6) [details] BSD-3-Clause (c) Edward Kmett 2010-2011, (c) Barak Pearlmutter and Jeffrey Mark Siskind 2008-2009 Edward Kmett ekmett@gmail.com Math http://github.com/ekmett/ad head: git clone git://github.com/ekmett/ad.git by EdwardKmett at 2011-07-28T18:55:05Z LTSHaskell:4.5.6, NixOS:4.5.6, Stackage:4.5.6 24 direct, 26 indirect [details] 83132 total (293 in the last 30 days) 2.5 (votes: 4) [estimated by Bayesian average] λ λ λ Docs uploaded by userBuild status unknown