Portability GHC only experimental ekmett@gmail.com

Contents

Description

Allows the choice of AD Mode to be specified at the term level for benchmarking or more complicated usage patterns.

Synopsis

grad :: (Traversable f, Num a) => Direction -> FU f a -> f a -> f aSource

grad' :: (Traversable f, Num a) => Direction -> FU f a -> f a -> (a, f a)Source

# Jacobians

jacobian :: (Traversable f, Traversable g, Num a) => Direction -> FF f g a -> f a -> g (f a)Source

jacobian' :: (Traversable f, Traversable g, Num a) => Direction -> FF f g a -> f a -> g (a, f a)Source

# Derivatives

diff :: Num a => Direction -> UU a -> a -> aSource

diff' :: Num a => Direction -> UU a -> a -> (a, a)Source

# Exposed Types

type UU a = forall s. Mode s => AD s a -> AD s aSource

A scalar-to-scalar automatically-differentiable function.

type UF f a = forall s. Mode s => AD s a -> f (AD s a)Source

A scalar-to-non-scalar automatically-differentiable function.

type FU f a = forall s. Mode s => f (AD s a) -> AD s aSource

A non-scalar-to-scalar automatically-differentiable function.

type FF f g a = forall s. Mode s => f (AD s a) -> g (AD s a)Source

A non-scalar-to-non-scalar automatically-differentiable function.

data Direction Source

Constructors

 Forward Reverse Tower Mixed

class Lifted t => Mode t whereSource

Methods

lift :: Num a => a -> t aSource

Embed a constant

(<+>) :: Num a => t a -> t a -> t aSource

Vector sum

(*^) :: Num a => a -> t a -> t aSource

Scalar-vector multiplication

(^*) :: Num a => t a -> a -> t aSource

Vector-scalar multiplication

(^/) :: Fractional a => t a -> a -> t aSource

Scalar division

zero :: Num a => t aSource

'zero' = 'lift' 0

Instances

 Mode Id Lifted Forward => Mode Forward Lifted Tower => Mode Tower Lifted Reverse => Mode Reverse Lifted Sparse => Mode Sparse Mode f => Mode (AD f) (Traversable f, Lifted (Dense f)) => Mode (Dense f) (Mode f, Mode g) => Mode (ComposeMode f g)