Double is:module

Mixed-Mode Automatic Differentiation, specialized to doubles. Each combinator exported from this module chooses an appropriate AD mode. 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 compute the Hessian matrix (matrix of second partial derivatives) of a function at a point
The suffixes have the following meanings:
  • ' -- 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.
Root finding using Halley's rational method (the second in the class of Householder methods). Assumes the function is three times continuously differentiable and converges cubically when progress can be made.
This module provides reverse-mode Automatic Differentiation implementation using linear time topological sorting after the fact. For this form of reverse-mode AD we use StableName to recover sharing information from the tape to avoid combinatorial explosion, and thus run asymptotically faster than it could without such sharing information, but the use of side-effects contained herein is benign.
Unsafe and often partial combinators intended for internal usage. Handle with care.
Forward Mode AD specialized to Double. This enables the entire structure to be unboxed.
This module provides reverse-mode Automatic Differentiation using post-hoc linear time topological sorting. For reverse mode AD we use StableName to recover sharing information from the tape to avoid combinatorial explosion, and thus run asymptotically faster than it could without such sharing information, but the use of side-effects contained herein is benign.
Reverse-mode automatic differentiation using Wengert lists and Data.Reflection This version is specialized to Double enabling the entire structure to be unboxed.
Higher order derivatives via a "dual number tower".
Higher order derivatives via a "dual number tower".
Root finding using Halley's rational method (the second in the class of Householder methods). Assumes the function is three times continuously differentiable and converges cubically when progress can be made.
This module provides reverse-mode Automatic Differentiation using post-hoc linear time topological sorting. For reverse mode AD we use StableName to recover sharing information from the tape to avoid combinatorial explosion, and thus run asymptotically faster than it could without such sharing information, but the use of side-effects contained herein is benign.
Higher order derivatives via a "dual number tower".
Higher order derivatives via a "dual number tower".
Using this module requires linking with -lfftw3.