Copyright | Copyright (c) 2009-2015, 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 7.10.1

This module defines auxiliary computations such as interpolation ones that complement the memoization, for example. There are scan computations too.

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