Module

Data.Number.Dual

Package
purescript-dual-numbers
Repository
Ebmtranceboy/purescript-dual-numbers

#Monoidal Source

class Monoidal :: (Type -> Type -> Type) -> Constraintclass Monoidal k  where

Members

  • cross :: forall a b c d. k a c -> k b d -> k (a /\ b) (c /\ d)

Instances

#linearPropagation Source

linearPropagation :: forall a b. (a -> b) -> (a -> b) -> Dual a b

#Cartesian Source

class Cartesian :: (Type -> Type -> Type) -> Constraintclass (Category k) <= Cartesian k  where

Members

  • exl :: forall a b. k (a /\ b) a
  • exr :: forall a b. k (a /\ b) b
  • dup :: forall a. k a (a /\ a)

Instances

#Space Source

class Space a  where

Members

Instances

#RingCat Source

class RingCat :: (Type -> Type -> Type) -> Type -> Constraintclass RingCat k s  where

Members

Instances

#DivisionRingCat Source

class DivisionRingCat :: (Type -> Type -> Type) -> Type -> Constraintclass DivisionRingCat k s  where

Members

Instances

#recipImpl Source

recipImpl :: forall b. EuclideanRing b => DivisionRing b => Dual b b

#pair Source

pair :: forall a c d k. Cartesian k => Monoidal k => k a c -> k a d -> k a (c /\ d)

Generalized pairing operator such that exl >>> f .:. exr >>> g is equivalent to cross f g

#(.:.) Source

Operator alias for Data.Number.Dual.pair (right-associative / precedence 6)

#cst Source

cst :: forall a s. Semiring s => s -> Dual a s

#axes Source

axes :: forall @n a. Axes n a => a

#Axes Source

class Axes :: Int -> Type -> Constraintclass Axes n a | n -> a where

Members

Instances

#Transposable Source

class Transposable a b | a -> b where

Members

Instances

#Cumulative Source

class Cumulative c a  where

Members

Instances

#Fmapable Source

class Fmapable a c b k | b c -> k where

Members

Instances

#minimize Source

minimize :: forall a c u t v axs. Fmapable a axs Number v => Transposable (a /\ v) c => Fmapable (Number /\ Number) c Number a => Transposable (v /\ v) u => Fmapable (Number /\ Number) u Number t => Cumulative t Number => axs -> Dual a Number -> Number -> Number -> a -> a

#distance2 Source

#norm2 Source

norm2 :: forall a s t u v. Fmapable Number a Number s => Transposable (a /\ s) t => Fmapable (Number /\ Number) t (Number /\ Number) u => Fmapable (Number /\ Number) u Number v => Cumulative v Number => Dual a Number