name: ad
version: 1.2.0.1
license: BSD3
license-File: LICENSE
copyright: (c) Edward Kmett 2010-2011,
(c) Barak Pearlmutter and Jeffrey Mark Siskind 2008-2009
author: Edward Kmett
maintainer: ekmett@gmail.com
stability: Experimental
category: Math
homepage: http://github.com/ekmett/ad
build-type: Simple
cabal-version: >= 1.6
extra-source-files: TODO
synopsis: Automatic Differentiation
description:
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.1.3
.
* Made primal calculations strict where possible.
.
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 '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
source-repository head
type: git
location: git://github.com/ekmett/ad.git
flag TemplateHaskell24
manual: False
default: False
library
extensions: CPP
other-extensions:
BangPatterns
DeriveDataTypeable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GeneralizedNewtypeDeriving
MultiParamTypeClasses
PatternGuards
Rank2Types
ScopedTypeVariables
TemplateHaskell
TypeFamilies
TypeOperators
UndecidableInstances
if flag(TemplateHaskell24)
build-depends: template-haskell >= 2.4 && < 2.5
cpp-options: -DOldClassI
else
build-depends: template-haskell >= 2.5 && < 2.6
build-depends:
base >= 4 && < 5,
data-reify >= 0.6 && < 0.7,
containers >= 0.2 && < 0.5,
array >= 0.2 && < 0.4,
comonad >= 1.1 && < 1.2,
free >= 1.8 && < 1.9
exposed-modules:
Numeric.AD
Numeric.AD.Classes
Numeric.AD.Types
Numeric.AD.Newton
Numeric.AD.Halley
Numeric.AD.Internal.Classes
Numeric.AD.Internal.Combinators
Numeric.AD.Internal.Forward
Numeric.AD.Internal.Tower
Numeric.AD.Internal.Reverse
Numeric.AD.Internal.Sparse
Numeric.AD.Internal.Dense
Numeric.AD.Internal.Composition
Numeric.AD.Mode.Directed
Numeric.AD.Mode.Forward
Numeric.AD.Mode.Mixed
Numeric.AD.Mode.Reverse
Numeric.AD.Mode.Tower
Numeric.AD.Mode.Sparse
other-modules:
Numeric.AD.Internal.Types
Numeric.AD.Internal.Tensors
Numeric.AD.Internal.Identity
ghc-options: -Wall -fspec-constr -fdicts-cheap -O2