Stability | experimental |
---|---|
Maintainer | conal@conal.net |
Infinite derivative towers via linear maps, using the Maclaurin representation. See blog posts http://conal.net/blog/tag/derivatives/.
- data a :> b
- powVal :: :> a b -> b
- derivative :: :> a b -> a :-* (a :> b)
- type :~> a b = a -> a :> b
- dZero :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => a :> b
- pureD :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => b -> a :> b
- fmapD :: (HasTrie (Basis a), VectorSpace b) => (b -> c) -> (a :> b) -> a :> c
- (<$>>) :: (HasTrie (Basis a), VectorSpace b) => (b -> c) -> (a :> b) -> a :> c
- liftD2 :: (HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d) => (b -> c -> d) -> (a :> b) -> (a :> c) -> a :> d
- liftD3 :: (HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d, VectorSpace e) => (b -> c -> d -> e) -> (a :> b) -> (a :> c) -> (a :> d) -> a :> e
- idD :: (VectorSpace u, s ~ Scalar u, VectorSpace (u :> u), VectorSpace s, HasBasis u, HasTrie (Basis u)) => u :~> u
- fstD :: (HasBasis a, HasTrie (Basis a), HasBasis b, HasTrie (Basis b), Scalar a ~ Scalar b) => (a, b) :~> a
- sndD :: (HasBasis a, HasTrie (Basis a), HasBasis b, HasTrie (Basis b), Scalar a ~ Scalar b) => (a, b) :~> b
- linearD :: (HasBasis u, HasTrie (Basis u), VectorSpace v) => (u -> v) -> u :~> v
- distrib :: (HasBasis a, HasTrie (Basis a), VectorSpace u) => (b -> c -> u) -> (a :> b) -> (a :> c) -> a :> u
- (>-<) :: (HasBasis a, HasTrie (Basis a), VectorSpace u) => (u -> u) -> ((a :> u) -> a :> Scalar u) -> (a :> u) -> a :> u
Documentation
Tower of derivatives.
derivative :: :> a b -> a :-* (a :> b)Source
dZero :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => a :> bSource
Derivative tower full of zeroV
.
pureD :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => b -> a :> bSource
Constant derivative tower.
(<$>>) :: (HasTrie (Basis a), VectorSpace b) => (b -> c) -> (a :> b) -> a :> cSource
Map a linear function over a derivative tower.
liftD2 :: (HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d) => (b -> c -> d) -> (a :> b) -> (a :> c) -> a :> dSource
Apply a linear binary function over derivative towers.
liftD3 :: (HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d, VectorSpace e) => (b -> c -> d -> e) -> (a :> b) -> (a :> c) -> (a :> d) -> a :> eSource
Apply a linear ternary function over derivative towers.
idD :: (VectorSpace u, s ~ Scalar u, VectorSpace (u :> u), VectorSpace s, HasBasis u, HasTrie (Basis u)) => u :~> uSource
Differentiable identity function. Sometimes called the derivation variable or similar, but it's not really a variable.
fstD :: (HasBasis a, HasTrie (Basis a), HasBasis b, HasTrie (Basis b), Scalar a ~ Scalar b) => (a, b) :~> aSource
Differentiable version of fst
sndD :: (HasBasis a, HasTrie (Basis a), HasBasis b, HasTrie (Basis b), Scalar a ~ Scalar b) => (a, b) :~> bSource
Differentiable version of snd
linearD :: (HasBasis u, HasTrie (Basis u), VectorSpace v) => (u -> v) -> u :~> vSource
Every linear function has a constant derivative equal to the function itself (as a linear map).