downhill-0.4.0.0: Reverse mode automatic differentiation
Safe HaskellSafe-Inferred
LanguageHaskell2010

Downhill.BVar.Num

Synopsis

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)))

newtype AsNum a Source #

AsNum a implements many instances in terms of Num a instance.

Constructors

AsNum 

Fields

Instances

Instances details
Floating a => Floating (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

pi :: AsNum a #

exp :: AsNum a -> AsNum a #

log :: AsNum a -> AsNum a #

sqrt :: AsNum a -> AsNum a #

(**) :: AsNum a -> AsNum a -> AsNum a #

logBase :: AsNum a -> AsNum a -> AsNum a #

sin :: AsNum a -> AsNum a #

cos :: AsNum a -> AsNum a #

tan :: AsNum a -> AsNum a #

asin :: AsNum a -> AsNum a #

acos :: AsNum a -> AsNum a #

atan :: AsNum a -> AsNum a #

sinh :: AsNum a -> AsNum a #

cosh :: AsNum a -> AsNum a #

tanh :: AsNum a -> AsNum a #

asinh :: AsNum a -> AsNum a #

acosh :: AsNum a -> AsNum a #

atanh :: AsNum a -> AsNum a #

log1p :: AsNum a -> AsNum a #

expm1 :: AsNum a -> AsNum a #

log1pexp :: AsNum a -> AsNum a #

log1mexp :: AsNum a -> AsNum a #

Num a => Num (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

(+) :: AsNum a -> AsNum a -> AsNum a #

(-) :: AsNum a -> AsNum a -> AsNum a #

(*) :: AsNum a -> AsNum a -> AsNum a #

negate :: AsNum a -> AsNum a #

abs :: AsNum a -> AsNum a #

signum :: AsNum a -> AsNum a #

fromInteger :: Integer -> AsNum a #

Fractional a => Fractional (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

(/) :: AsNum a -> AsNum a -> AsNum a #

recip :: AsNum a -> AsNum a #

fromRational :: Rational -> AsNum a #

Show a => Show (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

showsPrec :: Int -> AsNum a -> ShowS #

show :: AsNum a -> String #

showList :: [AsNum a] -> ShowS #

Num a => Manifold (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Associated Types

type Tang (AsNum a) Source #

type Grad (AsNum a) Source #

Num a => BasicVector (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Associated Types

type VecBuilder (AsNum a) Source #

Num a => AdditiveGroup (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

zeroV :: AsNum a #

(^+^) :: AsNum a -> AsNum a -> AsNum a #

negateV :: AsNum a -> AsNum a #

(^-^) :: AsNum a -> AsNum a -> AsNum a #

Num a => AffineSpace (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Associated Types

type Diff (AsNum a) #

Methods

(.-.) :: AsNum a -> AsNum a -> Diff (AsNum a) #

(.+^) :: AsNum a -> Diff (AsNum a) -> AsNum a #

Num a => VectorSpace (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Associated Types

type Scalar (AsNum a) #

Methods

(*^) :: Scalar (AsNum a) -> AsNum a -> AsNum a #

Num a => Dual (AsNum a) (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

evalGrad :: AsNum a -> AsNum a -> Scalar (AsNum a) Source #

Num a => MetricTensor (AsNum a) (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

Methods

evalMetric :: AsNum a -> Grad (AsNum a) -> Tang (AsNum a) Source #

innerProduct :: AsNum a -> Grad (AsNum a) -> Grad (AsNum a) -> MScalar (AsNum a) Source #

sqrNorm :: AsNum a -> Grad (AsNum a) -> MScalar (AsNum a) Source #

type Grad (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

type Grad (AsNum a) = AsNum a
type Tang (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

type Tang (AsNum a) = AsNum a
type VecBuilder (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

type VecBuilder (AsNum a) = Sum a
type Diff (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

type Diff (AsNum a) = AsNum a
type Scalar (AsNum a) Source # 
Instance details

Defined in Downhill.BVar.Num

type Scalar (AsNum a) = AsNum a

type NumBVar a = BVar (AsNum a) (AsNum a) Source #

var :: Num a => a -> NumBVar a Source #

constant :: forall a. Num a => a -> NumBVar a Source #

backpropNum :: forall a. Num a => NumBVar a -> a Source #