Safe Haskell | None |
---|---|
Language | Haskell2010 |
Documentation
Automatic differentiation for Num
hierarchy.
Polymorphic functions of type such as Num a => a -> a
can't be differentiated directly, because backprop
needs some additional instances.
AsNum
wrapper provides those instances.
derivative :: (forall b. Floating b => b -> b) -> (forall a. Floating a => a -> a) derivative fun x0 = backpropNum (fun (var (AsNum x0)))
AsNum a
implements many instances in terms of Num a
instance.
Instances
Floating a => Floating (AsNum a) Source # | |
Fractional a => Fractional (AsNum a) Source # | |
Num a => Num (AsNum a) Source # | |
Show a => Show (AsNum a) Source # | |
Num a => AffineSpace (AsNum a) Source # | |
Num a => VectorSpace (AsNum a) Source # | |
Num a => AdditiveGroup (AsNum a) Source # | |
Num a => BasicVector (AsNum a) Source # | |
Defined in Downhill.BVar.Num type VecBuilder (AsNum a) Source # sumBuilder :: VecBuilder (AsNum a) -> AsNum a Source # identityBuilder :: AsNum a -> VecBuilder (AsNum a) Source # | |
Num a => HasGrad (AsNum a) Source # | |
Num a => Dual (AsNum a) (AsNum a) Source # | |
Num a => MetricTensor (AsNum a) (AsNum a) Source # | |
type Diff (AsNum a) Source # | |
Defined in Downhill.BVar.Num | |
type Scalar (AsNum a) Source # | |
Defined in Downhill.BVar.Num | |
type VecBuilder (AsNum a) Source # | |
Defined in Downhill.BVar.Num | |
type Tang (AsNum a) Source # | |
Defined in Downhill.BVar.Num | |
type Grad (AsNum a) Source # | |
Defined in Downhill.BVar.Num |
numbvarValue :: NumBVar a -> a Source #
backpropNum :: forall a. Num a => NumBVar a -> a Source #