Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data AD s a
- data ForwardDouble
- grad :: Traversable f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> f Double
- grad' :: Traversable f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> (Double, f Double)
- gradWith :: Traversable f => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> f b
- gradWith' :: Traversable f => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> (Double, f b)
- jacobian :: (Traversable f, Traversable g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (f Double)
- jacobian' :: (Traversable f, Traversable g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (Double, f Double)
- jacobianWith :: (Traversable f, Traversable g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (f b)
- jacobianWith' :: (Traversable f, Traversable g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (Double, f b)
- jacobianT :: (Traversable f, Functor g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> f (g Double)
- jacobianWithT :: (Traversable f, Functor g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> f (g b)
- diff :: (forall s. AD s ForwardDouble -> AD s ForwardDouble) -> Double -> Double
- diff' :: (forall s. AD s ForwardDouble -> AD s ForwardDouble) -> Double -> (Double, Double)
- diffF :: Functor f => (forall s. AD s ForwardDouble -> f (AD s ForwardDouble)) -> Double -> f Double
- diffF' :: Functor f => (forall s. AD s ForwardDouble -> f (AD s ForwardDouble)) -> Double -> f (Double, Double)
- du :: Functor f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f (Double, Double) -> Double
- du' :: Functor f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f (Double, Double) -> (Double, Double)
- duF :: (Functor f, Functor g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f (Double, Double) -> g Double
- duF' :: (Functor f, Functor g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f (Double, Double) -> g (Double, Double)
Documentation
Bounded a => Bounded (AD s a) | |
Enum a => Enum (AD s a) | |
Eq a => Eq (AD s a) | |
Floating a => Floating (AD s a) | |
Fractional a => Fractional (AD s a) | |
Num a => Num (AD s a) | |
Ord a => Ord (AD s a) | |
Read a => Read (AD s a) | |
Real a => Real (AD s a) | |
RealFloat a => RealFloat (AD s a) | |
RealFrac a => RealFrac (AD s a) | |
Show a => Show (AD s a) | |
Erf a => Erf (AD s a) | |
InvErf a => InvErf (AD s a) | |
Mode a => Mode (AD s a) | |
Typeable (* -> * -> *) AD | |
type Scalar (AD s a) = Scalar a |
data ForwardDouble Source
Gradient
grad :: Traversable f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> f Double Source
Compute the gradient of a function using forward mode AD.
Note, this performs O(n) worse than grad
for n
inputs, in exchange for better space utilization.
grad' :: Traversable f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> (Double, f Double) Source
Compute the gradient and answer to a function using forward mode AD.
Note, this performs O(n) worse than grad'
for n
inputs, in exchange for better space utilization.
gradWith :: Traversable f => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> f b Source
Compute the gradient of a function using forward mode AD and combine the result with the input using a user-specified function.
Note, this performs O(n) worse than gradWith
for n
inputs, in exchange for better space utilization.
gradWith' :: Traversable f => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f Double -> (Double, f b) Source
Compute the gradient of a function using forward mode AD and the answer, and combine the result with the input using a user-specified function.
Note, this performs O(n) worse than gradWith'
for n
inputs, in exchange for better space utilization.
>>>
gradWith' (,) sum [0..4]
(10.0,[(0.0,1.0),(1.0,1.0),(2.0,1.0),(3.0,1.0),(4.0,1.0)])
Jacobian
jacobian :: (Traversable f, Traversable g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (f Double) Source
jacobian' :: (Traversable f, Traversable g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (Double, f Double) Source
Compute the Jacobian using Forward
mode AD
along with the actual answer.
jacobianWith :: (Traversable f, Traversable g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (f b) Source
Compute the Jacobian using Forward
mode AD
and combine the output with the input. This must transpose the result, so jacobianWithT
is faster, and allows more result types.
jacobianWith' :: (Traversable f, Traversable g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> g (Double, f b) Source
Compute the Jacobian using Forward
mode AD
combined with the input using a user specified function, along with the actual answer.
Transposed Jacobian
jacobianT :: (Traversable f, Functor g) => (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> f (g Double) Source
A fast, simple, transposed Jacobian computed with forward-mode AD.
jacobianWithT :: (Traversable f, Functor g) => (Double -> Double -> b) -> (forall s. f (AD s ForwardDouble) -> g (AD s ForwardDouble)) -> f Double -> f (g b) Source
A fast, simple, transposed Jacobian computed with Forward
mode AD
that combines the output with the input.
Derivatives
diff :: (forall s. AD s ForwardDouble -> AD s ForwardDouble) -> Double -> Double Source
diff' :: (forall s. AD s ForwardDouble -> AD s ForwardDouble) -> Double -> (Double, Double) Source
diffF :: Functor f => (forall s. AD s ForwardDouble -> f (AD s ForwardDouble)) -> Double -> f Double Source
diffF' :: Functor f => (forall s. AD s ForwardDouble -> f (AD s ForwardDouble)) -> Double -> f (Double, Double) Source
Directional Derivatives
du :: Functor f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f (Double, Double) -> Double Source
Compute the directional derivative of a function given a zipped up Functor
of the input values and their derivatives
du' :: Functor f => (forall s. f (AD s ForwardDouble) -> AD s ForwardDouble) -> f (Double, Double) -> (Double, Double) Source
Compute the answer and directional derivative of a function given a zipped up Functor
of the input values and their derivatives