ad-4.4: Automatic Differentiation

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

Numeric.AD.Internal.Dense

Description

Dense Forward AD. Useful when the result involves the majority of the input elements. Do not use for hessian and beyond, since they only contain a small number of unique nth derivatives -- (n + k - 1) choose k for functions of k inputs rather than the k^n that would be generated by using Dense, not to mention the redundant intermediate derivatives that would be calculated over and over during that process!

Assumes all instances of f have the same number of elements.

NB: We don't need the full power of Traversable here, we could get by with a notion of zippable that can plug in 0's for the missing entries. This might allow for gradients where f has exponentials like ((->) a)

Documentation

data Dense f a Source #

Constructors

Lift !a 
Dense !a (f a) 
Zero 
Instances
(Traversable f, Num a, Bounded a) => Bounded (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

minBound :: Dense f a #

maxBound :: Dense f a #

(Traversable f, Num a, Enum a) => Enum (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

succ :: Dense f a -> Dense f a #

pred :: Dense f a -> Dense f a #

toEnum :: Int -> Dense f a #

fromEnum :: Dense f a -> Int #

enumFrom :: Dense f a -> [Dense f a] #

enumFromThen :: Dense f a -> Dense f a -> [Dense f a] #

enumFromTo :: Dense f a -> Dense f a -> [Dense f a] #

enumFromThenTo :: Dense f a -> Dense f a -> Dense f a -> [Dense f a] #

(Traversable f, Num a, Eq a) => Eq (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

(==) :: Dense f a -> Dense f a -> Bool #

(/=) :: Dense f a -> Dense f a -> Bool #

(Traversable f, Floating a) => Floating (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

pi :: Dense f a #

exp :: Dense f a -> Dense f a #

log :: Dense f a -> Dense f a #

sqrt :: Dense f a -> Dense f a #

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

logBase :: Dense f a -> Dense f a -> Dense f a #

sin :: Dense f a -> Dense f a #

cos :: Dense f a -> Dense f a #

tan :: Dense f a -> Dense f a #

asin :: Dense f a -> Dense f a #

acos :: Dense f a -> Dense f a #

atan :: Dense f a -> Dense f a #

sinh :: Dense f a -> Dense f a #

cosh :: Dense f a -> Dense f a #

tanh :: Dense f a -> Dense f a #

asinh :: Dense f a -> Dense f a #

acosh :: Dense f a -> Dense f a #

atanh :: Dense f a -> Dense f a #

log1p :: Dense f a -> Dense f a #

expm1 :: Dense f a -> Dense f a #

log1pexp :: Dense f a -> Dense f a #

log1mexp :: Dense f a -> Dense f a #

(Traversable f, Fractional a) => Fractional (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

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

recip :: Dense f a -> Dense f a #

fromRational :: Rational -> Dense f a #

(Traversable f, Num a) => Num (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

(+) :: Dense f a -> Dense f a -> Dense f a #

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

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

negate :: Dense f a -> Dense f a #

abs :: Dense f a -> Dense f a #

signum :: Dense f a -> Dense f a #

fromInteger :: Integer -> Dense f a #

(Traversable f, Num a, Ord a) => Ord (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

compare :: Dense f a -> Dense f a -> Ordering #

(<) :: Dense f a -> Dense f a -> Bool #

(<=) :: Dense f a -> Dense f a -> Bool #

(>) :: Dense f a -> Dense f a -> Bool #

(>=) :: Dense f a -> Dense f a -> Bool #

max :: Dense f a -> Dense f a -> Dense f a #

min :: Dense f a -> Dense f a -> Dense f a #

(Traversable f, Real a) => Real (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

toRational :: Dense f a -> Rational #

(Traversable f, RealFloat a) => RealFloat (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

floatRadix :: Dense f a -> Integer #

floatDigits :: Dense f a -> Int #

floatRange :: Dense f a -> (Int, Int) #

decodeFloat :: Dense f a -> (Integer, Int) #

encodeFloat :: Integer -> Int -> Dense f a #

exponent :: Dense f a -> Int #

significand :: Dense f a -> Dense f a #

scaleFloat :: Int -> Dense f a -> Dense f a #

isNaN :: Dense f a -> Bool #

isInfinite :: Dense f a -> Bool #

isDenormalized :: Dense f a -> Bool #

isNegativeZero :: Dense f a -> Bool #

isIEEE :: Dense f a -> Bool #

atan2 :: Dense f a -> Dense f a -> Dense f a #

(Traversable f, RealFrac a) => RealFrac (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

properFraction :: Integral b => Dense f a -> (b, Dense f a) #

truncate :: Integral b => Dense f a -> b #

round :: Integral b => Dense f a -> b #

ceiling :: Integral b => Dense f a -> b #

floor :: Integral b => Dense f a -> b #

Show a => Show (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

showsPrec :: Int -> Dense f a -> ShowS #

show :: Dense f a -> String #

showList :: [Dense f a] -> ShowS #

(Traversable f, Erf a) => Erf (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

erf :: Dense f a -> Dense f a #

erfc :: Dense f a -> Dense f a #

erfcx :: Dense f a -> Dense f a #

normcdf :: Dense f a -> Dense f a #

(Traversable f, InvErf a) => InvErf (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Methods

inverf :: Dense f a -> Dense f a #

inverfc :: Dense f a -> Dense f a #

invnormcdf :: Dense f a -> Dense f a #

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

Defined in Numeric.AD.Internal.Dense

Associated Types

type Scalar (Dense f a) :: Type Source #

Methods

isKnownConstant :: Dense f a -> Bool Source #

isKnownZero :: Dense f a -> Bool Source #

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

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

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

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

zero :: Dense f a Source #

(Traversable f, Num a) => Jacobian (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

Associated Types

type D (Dense f a) :: Type Source #

Methods

unary :: (Scalar (Dense f a) -> Scalar (Dense f a)) -> D (Dense f a) -> Dense f a -> Dense f a Source #

lift1 :: (Scalar (Dense f a) -> Scalar (Dense f a)) -> (D (Dense f a) -> D (Dense f a)) -> Dense f a -> Dense f a Source #

lift1_ :: (Scalar (Dense f a) -> Scalar (Dense f a)) -> (D (Dense f a) -> D (Dense f a) -> D (Dense f a)) -> Dense f a -> Dense f a Source #

binary :: (Scalar (Dense f a) -> Scalar (Dense f a) -> Scalar (Dense f a)) -> D (Dense f a) -> D (Dense f a) -> Dense f a -> Dense f a -> Dense f a Source #

lift2 :: (Scalar (Dense f a) -> Scalar (Dense f a) -> Scalar (Dense f a)) -> (D (Dense f a) -> D (Dense f a) -> (D (Dense f a), D (Dense f a))) -> Dense f a -> Dense f a -> Dense f a Source #

lift2_ :: (Scalar (Dense f a) -> Scalar (Dense f a) -> Scalar (Dense f a)) -> (D (Dense f a) -> D (Dense f a) -> D (Dense f a) -> (D (Dense f a), D (Dense f a))) -> Dense f a -> Dense f a -> Dense f a Source #

type Scalar (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

type Scalar (Dense f a) = a
type D (Dense f a) Source # 
Instance details

Defined in Numeric.AD.Internal.Dense

type D (Dense f a) = Id a

ds :: f a -> Dense f a -> f a Source #

ds' :: Num a => f a -> Dense f a -> (a, f a) Source #

vars :: (Traversable f, Num a) => f a -> f (Dense f a) Source #

apply :: (Traversable f, Num a) => (f (Dense f a) -> b) -> f a -> b Source #