 | vector-space-0.7.1: Vector & affine spaces, linear maps, and derivatives (requires ghc 6.9 or better) | Source code | Contents | Index |
|
Data.Maclaurin | Stability | experimental | Maintainer | conal@conal.net |
|
|
|
|
|
Description |
Infinite derivative towers via linear maps, using the Maclaurin
representation. See blog posts http://conal.net/blog/tag/derivatives/.
|
|
Synopsis |
|
data a :> b = D {} | | derivAtBasis :: (HasTrie (Basis a), HasBasis a, AdditiveGroup b) => (a :> b) -> Basis a -> a :> b | | type :~> a b = a -> a :> b | | pureD :: (AdditiveGroup b, HasBasis a, HasTrie (Basis a)) => b -> a :> b | | fmapD :: (HasBasis a, HasTrie (Basis a), AdditiveGroup b) => (b -> c) -> (a :> b) -> a :> c | | (<$>>) :: (HasBasis a, HasTrie (Basis a), AdditiveGroup b) => (b -> c) -> (a :> b) -> a :> c | | liftD2 :: (HasBasis a, HasTrie (Basis a), AdditiveGroup b, AdditiveGroup c) => (b -> c -> d) -> (a :> b) -> (a :> c) -> a :> d | | liftD3 :: (HasBasis a, HasTrie (Basis a), AdditiveGroup b, AdditiveGroup c, AdditiveGroup d) => (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), AdditiveGroup v) => (u -> v) -> u :~> v | | distrib :: forall a b c u. (HasBasis a, HasTrie (Basis a), AdditiveGroup b, AdditiveGroup c, AdditiveGroup u) => (b -> c -> u) -> (a :> b) -> (a :> c) -> a :> u | | (>-<) :: (HasBasis a, HasTrie (Basis a), VectorSpace u, AdditiveGroup (Scalar u)) => (u -> u) -> ((a :> u) -> a :> Scalar u) -> (a :> u) -> a :> u | | pairD :: (HasBasis a, HasTrie (Basis a), VectorSpace b, VectorSpace c, Scalar b ~ Scalar c) => (a :> b, a :> c) -> a :> (b, c) | | unpairD :: (HasBasis a, HasTrie (Basis a), VectorSpace a, VectorSpace b, VectorSpace c, Scalar b ~ Scalar c) => (a :> (b, c)) -> (a :> b, a :> c) | | tripleD :: (HasBasis a, HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d, Scalar b ~ Scalar c, Scalar c ~ Scalar d) => (a :> b, a :> c, a :> d) -> a :> (b, c, d) | | untripleD :: (HasBasis a, HasTrie (Basis a), VectorSpace a, VectorSpace b, VectorSpace c, VectorSpace d, Scalar b ~ Scalar c, Scalar c ~ Scalar d) => (a :> (b, c, d)) -> (a :> b, a :> c, a :> d) |
|
|
Documentation |
|
|
Tower of derivatives.
| Constructors | D | | powVal :: b | | derivative :: a :-* (a :> b) | |
|
| Instances | (AdditiveGroup v, HasBasis u, HasTrie (Basis u), IfB b v) => IfB b (u :> v) | (AdditiveGroup v, HasBasis u, HasTrie (Basis u), OrdB b v) => OrdB b (u :> v) | Eq b => Eq (a :> b) | (s ~ Scalar a, Scalar s ~ s, HasBasis a, HasTrie (Basis a), Floating s, VectorSpace s) => Floating (a :> s) | (s ~ Scalar a, Scalar s ~ s, HasBasis a, HasTrie (Basis a), Fractional s, VectorSpace s) => Fractional (a :> s) | (s ~ Scalar a, Scalar s ~ s, HasBasis a, HasTrie (Basis a), Num s, VectorSpace s) => Num (a :> s) | (AdditiveGroup b, HasBasis a, HasTrie (Basis a), OrdB bool b, IfB bool b, Ord b) => Ord (a :> b) | Show b => Show (a :> b) | (HasBasis a, HasTrie (Basis a), AdditiveGroup u) => AdditiveGroup (a :> u) | (s ~ Scalar u, InnerSpace u, AdditiveGroup s, HasBasis a, HasTrie (Basis a)) => InnerSpace (a :> u) | (HasBasis a, HasTrie (Basis a), VectorSpace u, AdditiveGroup (Scalar u)) => VectorSpace (a :> u) | (HasBasis a, HasTrie (Basis a), VectorSpace v, HasCross3 v) => HasCross3 (a :> v) | (HasBasis a, HasTrie (Basis a), VectorSpace v, HasCross2 v) => HasCross2 (a :> v) | (Basis s ~ (), Num s, HasTrie (Basis ((,) s s)), HasBasis s) => HasNormal (Two s :> Three s) | (Basis s ~ (), HasBasis s, HasTrie (Basis s)) => HasNormal (One s :> Two s) |
|
|
|
|
Sample the derivative at a basis element. Optimized for partial
application to save work for non-scalar derivatives.
|
|
|
Infinitely differentiable functions
|
|
|
Constant derivative tower.
|
|
|
|
|
Map a linear function over a derivative tower.
|
|
|
Apply a linear binary function over derivative towers.
|
|
|
Apply a linear ternary function over derivative towers.
|
|
|
Differentiable identity function. Sometimes called the
derivation variable or similar, but it's not really a variable.
|
|
|
Differentiable version of fst
|
|
|
Differentiable version of snd
|
|
|
Every linear function has a constant derivative equal to the function
itself (as a linear map).
|
|
|
Derivative tower for applying a binary function that distributes over
addition, such as multiplication. A bit weaker assumption than
bilinearity. Is bilinearity necessary for correctness here?
|
|
|
Specialized chain rule. See also '(@.)'
|
|
Misc
|
|
|
|
|
|
tripleD :: (HasBasis a, HasTrie (Basis a), VectorSpace b, VectorSpace c, VectorSpace d, Scalar b ~ Scalar c, Scalar c ~ Scalar d) => (a :> b, a :> c, a :> d) -> a :> (b, c, d) | Source |
|
|
untripleD :: (HasBasis a, HasTrie (Basis a), VectorSpace a, VectorSpace b, VectorSpace c, VectorSpace d, Scalar b ~ Scalar c, Scalar c ~ Scalar d) => (a :> (b, c, d)) -> (a :> b, a :> c, a :> d) | Source |
|
|
Produced by Haddock version 2.4.2 |