Copyright (c) Edward Kmett 2010-2021 BSD3 ekmett@gmail.com experimental GHC only Safe-Inferred Haskell2010

Description

Higher order derivatives via a "dual number tower".

Synopsis

# Documentation

data AD s a Source #

#### Instances

Instances details

Tower is an AD Mode that calculates a tangent tower by forward AD, and provides fast diffsUU, diffsUF

#### Instances

Instances details

auto :: Mode t => Scalar t -> t Source #

Embed a constant

# Taylor Series

taylor :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> Double -> [Double] Source #

taylor0 :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> Double -> [Double] Source #

# Maclaurin Series

maclaurin :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> [Double] Source #

maclaurin0 :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> [Double] Source #

# Derivatives

diff :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> Double Source #

diff' :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> (Double, Double) Source #

diffs :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> [Double] Source #

diffs0 :: (forall s. AD s TowerDouble -> AD s TowerDouble) -> Double -> [Double] Source #

diffsF :: Functor f => (forall s. AD s TowerDouble -> f (AD s TowerDouble)) -> Double -> f [Double] Source #

diffs0F :: Functor f => (forall s. AD s TowerDouble -> f (AD s TowerDouble)) -> Double -> f [Double] Source #

# Directional Derivatives

du :: Functor f => (forall s. f (AD s TowerDouble) -> AD s TowerDouble) -> f (Double, Double) -> Double Source #

du' :: Functor f => (forall s. f (AD s TowerDouble) -> AD s TowerDouble) -> f (Double, Double) -> (Double, Double) Source #

dus :: Functor f => (forall s. f (AD s TowerDouble) -> AD s TowerDouble) -> f [Double] -> [Double] Source #

dus0 :: Functor f => (forall s. f (AD s TowerDouble) -> AD s TowerDouble) -> f [Double] -> [Double] Source #

duF :: (Functor f, Functor g) => (forall s. f (AD s TowerDouble) -> g (AD s TowerDouble)) -> f (Double, Double) -> g Double Source #

duF' :: (Functor f, Functor g) => (forall s. f (AD s TowerDouble) -> g (AD s TowerDouble)) -> f (Double, Double) -> g (Double, Double) Source #

dusF :: (Functor f, Functor g) => (forall s. f (AD s TowerDouble) -> g (AD s TowerDouble)) -> f [Double] -> g [Double] Source #

dus0F :: (Functor f, Functor g) => (forall s. f (AD s TowerDouble) -> g (AD s TowerDouble)) -> f [Double] -> g [Double] Source #