dvda-0.4: Efficient automatic differentiation and code generation

Safe HaskellNone

Dvda.Algorithm

Synopsis

Documentation

constructAlgorithm :: Vector (Expr a) -> Vector (Expr a) -> IO (Algorithm a)Source

create a SSA algorithm from a vector of symbolic inputs and outputs

runAlgorithm :: Vector v a => Algorithm a -> v a -> Either String (v a)Source

purely run an algoritm

runAlgorithm' :: Vector v a => Algorithm a -> v a -> Mutable v s a -> ST s (Maybe String)Source

run an algoritm in the ST monad, mutating a user-provided output vector

toSymbolicAlg :: Eq a => Algorithm a -> Algorithm (Expr a)Source

Convert an algorithm into a symbolic algorithm. Is there any reason to keep this when we have toFloatingAlg?

squashIsSame :: (Eq (v a), Vector v a) => v a -> Algorithm a -> BoolSource

test to see of SSA algorithm works the same as Live variables version