Portability GHC only experimental ekmett@gmail.com None

Description

Higher order derivatives via a "dual number tower".

Synopsis

# Documentation

Instances

data Tower a Source

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

Instances

 Typeable1 Tower (Num a, Bounded a) => Bounded (Tower a) (Num a, Enum a) => Enum (Tower a) (Num a, Eq a) => Eq (Tower a) Floating a => Floating (Tower a) Fractional a => Fractional (Tower a) Data a => Data (Tower a) Num a => Num (Tower a) (Num a, Ord a) => Ord (Tower a) Real a => Real (Tower a) RealFloat a => RealFloat (Tower a) RealFrac a => RealFrac (Tower a) Show a => Show (Tower a) Erf a => Erf (Tower a) InvErf a => InvErf (Tower a) Num a => Mode (Tower a) Num a => Jacobian (Tower a)

auto :: Mode t => Scalar t -> tSource

Embed a constant

# Taylor Series

taylor :: Fractional a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> a -> [a]Source

taylor0 :: Fractional a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> a -> [a]Source

# Maclaurin Series

maclaurin :: Fractional a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> [a]Source

maclaurin0 :: Fractional a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> [a]Source

# Derivatives

diff :: Num a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> aSource

diff' :: Num a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> (a, a)Source

diffs :: Num a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> [a]Source

diffs0 :: Num a => (forall s. AD s (Tower a) -> AD s (Tower a)) -> a -> [a]Source

diffsF :: (Functor f, Num a) => (forall s. AD s (Tower a) -> f (AD s (Tower a))) -> a -> f [a]Source

diffs0F :: (Functor f, Num a) => (forall s. AD s (Tower a) -> f (AD s (Tower a))) -> a -> f [a]Source

# Directional Derivatives

du :: (Functor f, Num a) => (forall s. f (AD s (Tower a)) -> AD s (Tower a)) -> f (a, a) -> aSource

du' :: (Functor f, Num a) => (forall s. f (AD s (Tower a)) -> AD s (Tower a)) -> f (a, a) -> (a, a)Source

dus :: (Functor f, Num a) => (forall s. f (AD s (Tower a)) -> AD s (Tower a)) -> f [a] -> [a]Source

dus0 :: (Functor f, Num a) => (forall s. f (AD s (Tower a)) -> AD s (Tower a)) -> f [a] -> [a]Source

duF :: (Functor f, Functor g, Num a) => (forall s. f (AD s (Tower a)) -> g (AD s (Tower a))) -> f (a, a) -> g aSource

duF' :: (Functor f, Functor g, Num a) => (forall s. f (AD s (Tower a)) -> g (AD s (Tower a))) -> f (a, a) -> g (a, a)Source

dusF :: (Functor f, Functor g, Num a) => (forall s. f (AD s (Tower a)) -> g (AD s (Tower a))) -> f [a] -> g [a]Source

dus0F :: (Functor f, Functor g, Num a) => (forall s. f (AD s (Tower a)) -> g (AD s (Tower a))) -> f [a] -> g [a]Source