Copyright | Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com> |
---|---|
License | BSD3 |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Tested with: GHC 8.0.1
This module defines auxiliary computations such as interpolation ones that complement the memoization, for example. There are scan computations too.
Synopsis
- initTransform :: Monad m => Transform m a a
- discreteTransform :: Monad m => Transform m a a
- interpolatingTransform :: Monad m => Transform m a a
- scanTransform :: MonadFix m => (a -> b -> a) -> a -> Transform m a a -> Transform m b a
- scan1Transform :: MonadFix m => (a -> a -> a) -> Transform m a a -> Transform m a a
Interpolation
initTransform :: Monad m => Transform m a a Source #
A transform that returns the initial value.
discreteTransform :: Monad m => Transform m a a Source #
A transform that discretizes the computation in the integration time points.
interpolatingTransform :: Monad m => Transform m a a Source #
A tranform that interpolates the computation based on the integration time points only.
Unlike the discreteTransform
computation it knows about the intermediate
time points that are used in the Runge-Kutta method.
Scans
scanTransform :: MonadFix m => (a -> b -> a) -> a -> Transform m a a -> Transform m b a Source #
Like the standard scanl
function but applied to values in
the integration time points. The accumulator values are transformed
according to the third argument, which should be either
memo0Transform
or its unboxed version.
scan1Transform :: MonadFix m => (a -> a -> a) -> Transform m a a -> Transform m a a Source #
Like the standard scanl1
function but applied to values in
the integration time points. The accumulator values are transformed
according to the second argument, which should be either
memo0Transform
or its unboxed version.