vector-space-0.2.0: Vector & affine spaces, plus derivativesSource codeContentsIndex
Data.Derivative
Stabilityexperimental
Maintainerconal@conal.net
Description
This module is a wrapper around Data.Maclaurin or Data.Horner, to change the VectorSpace instance for '(:>)'.
Synopsis
data a :> b
powVal :: (a :> b) -> b
derivative :: (VectorSpace b s, LMapDom a s) => (a :> b) -> a :-* (a :> b)
derivativeAt :: (LMapDom a s, VectorSpace b s) => (a :> b) -> a -> a :> b
type :~> a b = a -> a :> b
dZero :: (LMapDom a s, VectorSpace b s) => a :> b
pureD :: (LMapDom a s, VectorSpace b s) => b -> a :> b
(<$>>) :: (LMapDom a s, VectorSpace b s) => (b -> c) -> (a :> b) -> a :> c
liftD2 :: (VectorSpace b s, LMapDom a s, VectorSpace c s, VectorSpace d s) => (b -> c -> d) -> (a :> b) -> (a :> c) -> a :> d
liftD3 :: (LMapDom a s, VectorSpace b s, VectorSpace c s, VectorSpace d s, VectorSpace e s) => (b -> c -> d -> e) -> (a :> b) -> (a :> c) -> (a :> d) -> a :> e
idD :: (LMapDom u s, VectorSpace u s) => u :~> u
fstD :: (VectorSpace a s, LMapDom b s, LMapDom a s) => (a, b) :~> a
sndD :: (VectorSpace b s, LMapDom b s, LMapDom a s) => (a, b) :~> b
linearD :: (LMapDom u s, VectorSpace v s) => (u -> v) -> u :~> v
distrib :: (LMapDom a s, VectorSpace b s, VectorSpace c s, VectorSpace u s) => (b -> c -> u) -> (a :> b) -> (a :> c) -> a :> u
(@.) :: (LMapDom b s, LMapDom a s, VectorSpace c s) => (b :~> c) -> (a :~> b) -> a :~> c
(>-<) :: (LMapDom a s, VectorSpace s s, VectorSpace u s) => (u -> u) -> ((a :> u) -> a :> s) -> (a :> u) -> a :> u
Documentation
data a :> b Source
Tower of derivatives.
show/hide Instances
Eq b => Eq (a :> b)
(VectorSpace b b, LMapDom a b, Floating b) => Floating (a :> b)
(VectorSpace b b, LMapDom a b, Fractional b) => Fractional (a :> b)
(VectorSpace b b, LMapDom a b, Num b) => Num (a :> b)
Ord b => Ord (a :> b)
Show b => Show (a :> b)
(VectorSpace b s, LMapDom a s) => AdditiveGroup (a :> b)
(LMapDom a s, VectorSpace v s, HasCross3 v) => HasCross3 (a :> v)
(LMapDom a s, VectorSpace v s, HasCross2 v) => HasCross2 (a :> v)
(Num s, LMapDom s s) => HasNormal (Two s :> Three s)
(Num s, LMapDom s s) => HasNormal (One s :> Two s)
(InnerSpace u s, InnerSpace s s', VectorSpace s s, LMapDom a s) => InnerSpace (a :> u) (a :> s)
(LMapDom a s, VectorSpace u s, VectorSpace s s) => VectorSpace (a :> u) (a :> s)
powVal :: (a :> b) -> bSource
Extract the value from a derivative tower
derivative :: (VectorSpace b s, LMapDom a s) => (a :> b) -> a :-* (a :> b)Source
Extract the derivative from a derivative tower
derivativeAt :: (LMapDom a s, VectorSpace b s) => (a :> b) -> a -> a :> bSource
Sampled derivative. For avoiding an awkward typing problem related to the two required VectorSpace instances.
type :~> a b = a -> a :> bSource
Infinitely differentiable functions
dZero :: (LMapDom a s, VectorSpace b s) => a :> bSource
Derivative tower full of zeroV.
pureD :: (LMapDom a s, VectorSpace b s) => b -> a :> bSource
Constant derivative tower.
(<$>>) :: (LMapDom a s, VectorSpace b s) => (b -> c) -> (a :> b) -> a :> cSource
Map a linear function over a derivative tower.
liftD2 :: (VectorSpace b s, LMapDom a s, VectorSpace c s, VectorSpace d s) => (b -> c -> d) -> (a :> b) -> (a :> c) -> a :> dSource
Apply a linear binary function over derivative towers.
liftD3 :: (LMapDom a s, VectorSpace b s, VectorSpace c s, VectorSpace d s, VectorSpace e s) => (b -> c -> d -> e) -> (a :> b) -> (a :> c) -> (a :> d) -> a :> eSource
Apply a linear ternary function over derivative towers.
idD :: (LMapDom u s, VectorSpace u s) => u :~> uSource
Differentiable identity function. Sometimes called the derivation variable or similar, but it's not really a variable.
fstD :: (VectorSpace a s, LMapDom b s, LMapDom a s) => (a, b) :~> aSource
Differentiable version of fst
sndD :: (VectorSpace b s, LMapDom b s, LMapDom a s) => (a, b) :~> bSource
Differentiable version of snd
linearD :: (LMapDom u s, VectorSpace v s) => (u -> v) -> u :~> vSource
Every linear function has a constant derivative equal to the function itself (as a linear map).
distrib :: (LMapDom a s, VectorSpace b s, VectorSpace c s, VectorSpace u s) => (b -> c -> u) -> (a :> b) -> (a :> c) -> a :> uSource
Derivative tower for applying a binary function that distributes over addition, such as multiplication. A bit weaker assumption than bilinearity.
(@.) :: (LMapDom b s, LMapDom a s, VectorSpace c s) => (b :~> c) -> (a :~> b) -> a :~> cSource
Chain rule.
(>-<) :: (LMapDom a s, VectorSpace s s, VectorSpace u s) => (u -> u) -> ((a :> u) -> a :> s) -> (a :> u) -> a :> uSource
Specialized chain rule.
Produced by Haddock version 2.3.0