ad-4.3.3: Automatic Differentiation

Copyright(c) Edward Kmett 2010-2015
LicenseBSD3
Maintainerekmett@gmail.com
Stabilityexperimental
PortabilityGHC only
Safe HaskellNone
LanguageHaskell2010

Numeric.AD.Mode

Contents

Description

 

Synopsis

AD modes

class (Num t, Num (Scalar t)) => Mode t where #

Minimal complete definition

auto

Associated Types

type Scalar t #

Methods

isKnownConstant :: t -> Bool #

allowed to return False for items with a zero derivative, but we'll give more NaNs than strictly necessary

isKnownZero :: t -> Bool #

allowed to return False for zero, but we give more NaN's than strictly necessary then

auto :: Scalar t -> t #

Embed a constant

(*^) :: Scalar t -> t -> t infixr 7 #

Scalar-vector multiplication

(^*) :: t -> Scalar t -> t infixl 7 #

Vector-scalar multiplication

(^/) :: Fractional (Scalar t) => t -> Scalar t -> t infixr 7 #

Scalar division

zero :: t #

zero = lift 0

Instances

Mode Double # 
Mode Float # 
Mode Int # 

Associated Types

type Scalar Int :: * #

Mode Int8 # 

Associated Types

type Scalar Int8 :: * #

Mode Int16 # 
Mode Int32 # 
Mode Int64 # 
Mode Integer # 
Mode Word # 

Associated Types

type Scalar Word :: * #

Mode Word8 # 
Mode Word16 # 
Mode Word32 # 
Mode Word64 # 
Mode Natural # 
Mode ForwardDouble # 
Integral a => Mode (Ratio a) # 

Associated Types

type Scalar (Ratio a) :: * #

Methods

isKnownConstant :: Ratio a -> Bool #

isKnownZero :: Ratio a -> Bool #

auto :: Scalar (Ratio a) -> Ratio a #

(*^) :: Scalar (Ratio a) -> Ratio a -> Ratio a #

(^*) :: Ratio a -> Scalar (Ratio a) -> Ratio a #

(^/) :: Ratio a -> Scalar (Ratio a) -> Ratio a #

zero :: Ratio a #

RealFloat a => Mode (Complex a) # 

Associated Types

type Scalar (Complex a) :: * #

(Mode t, Mode (Scalar t)) => Mode (On t) # 

Associated Types

type Scalar (On t) :: * #

Methods

isKnownConstant :: On t -> Bool #

isKnownZero :: On t -> Bool #

auto :: Scalar (On t) -> On t #

(*^) :: Scalar (On t) -> On t -> On t #

(^*) :: On t -> Scalar (On t) -> On t #

(^/) :: On t -> Scalar (On t) -> On t #

zero :: On t #

Num a => Mode (Id a) # 

Associated Types

type Scalar (Id a) :: * #

Methods

isKnownConstant :: Id a -> Bool #

isKnownZero :: Id a -> Bool #

auto :: Scalar (Id a) -> Id a #

(*^) :: Scalar (Id a) -> Id a -> Id a #

(^*) :: Id a -> Scalar (Id a) -> Id a #

(^/) :: Id a -> Scalar (Id a) -> Id a #

zero :: Id a #

Num a => Mode (Forward a) # 

Associated Types

type Scalar (Forward a) :: * #

Num a => Mode (Kahn a) # 

Associated Types

type Scalar (Kahn a) :: * #

Methods

isKnownConstant :: Kahn a -> Bool #

isKnownZero :: Kahn a -> Bool #

auto :: Scalar (Kahn a) -> Kahn a #

(*^) :: Scalar (Kahn a) -> Kahn a -> Kahn a #

(^*) :: Kahn a -> Scalar (Kahn a) -> Kahn a #

(^/) :: Kahn a -> Scalar (Kahn a) -> Kahn a #

zero :: Kahn a #

Num a => Mode (Sparse a) # 

Associated Types

type Scalar (Sparse a) :: * #

Methods

isKnownConstant :: Sparse a -> Bool #

isKnownZero :: Sparse a -> Bool #

auto :: Scalar (Sparse a) -> Sparse a #

(*^) :: Scalar (Sparse a) -> Sparse a -> Sparse a #

(^*) :: Sparse a -> Scalar (Sparse a) -> Sparse a #

(^/) :: Sparse a -> Scalar (Sparse a) -> Sparse a #

zero :: Sparse a #

Num a => Mode (Tower a) # 

Associated Types

type Scalar (Tower a) :: * #

Methods

isKnownConstant :: Tower a -> Bool #

isKnownZero :: Tower a -> Bool #

auto :: Scalar (Tower a) -> Tower a #

(*^) :: Scalar (Tower a) -> Tower a -> Tower a #

(^*) :: Tower a -> Scalar (Tower a) -> Tower a #

(^/) :: Tower a -> Scalar (Tower a) -> Tower a #

zero :: Tower a #

Mode a => Mode (AD s a) # 

Associated Types

type Scalar (AD s a) :: * #

Methods

isKnownConstant :: AD s a -> Bool #

isKnownZero :: AD s a -> Bool #

auto :: Scalar (AD s a) -> AD s a #

(*^) :: Scalar (AD s a) -> AD s a -> AD s a #

(^*) :: AD s a -> Scalar (AD s a) -> AD s a #

(^/) :: AD s a -> Scalar (AD s a) -> AD s a #

zero :: AD s a #

(Num a, Traversable f) => Mode (Dense f a) # 

Associated Types

type Scalar (Dense f a) :: * #

Methods

isKnownConstant :: Dense f a -> Bool #

isKnownZero :: Dense f a -> Bool #

auto :: Scalar (Dense f a) -> Dense f a #

(*^) :: Scalar (Dense f a) -> Dense f a -> Dense f a #

(^*) :: Dense f a -> Scalar (Dense f a) -> Dense f a #

(^/) :: Dense f a -> Scalar (Dense f a) -> Dense f a #

zero :: Dense f a #

(Reifies * s Tape, Num a) => Mode (Reverse s a) # 

Associated Types

type Scalar (Reverse s a) :: * #

Methods

isKnownConstant :: Reverse s a -> Bool #

isKnownZero :: Reverse s a -> Bool #

auto :: Scalar (Reverse s a) -> Reverse s a #

(*^) :: Scalar (Reverse s a) -> Reverse s a -> Reverse s a #

(^*) :: Reverse s a -> Scalar (Reverse s a) -> Reverse s a #

(^/) :: Reverse s a -> Scalar (Reverse s a) -> Reverse s a #

zero :: Reverse s a #

(Mode a, Mode b, Chosen s, (~) * (Scalar a) (Scalar b)) => Mode (Or s a b) # 

Associated Types

type Scalar (Or s a b) :: * #

Methods

isKnownConstant :: Or s a b -> Bool #

isKnownZero :: Or s a b -> Bool #

auto :: Scalar (Or s a b) -> Or s a b #

(*^) :: Scalar (Or s a b) -> Or s a b -> Or s a b #

(^*) :: Or s a b -> Scalar (Or s a b) -> Or s a b #

(^/) :: Or s a b -> Scalar (Or s a b) -> Or s a b #

zero :: Or s a b #