On Sat, 22 Jan 2011, Grigory Sarnitskiy wrote:

I need to deal with functions of type (Double -> Double). I need Fourier transform, integration, + - * / operations, value of a function in a point, probably composition.

Incidentally I am currently working on a function representation based on Gaussians. It supports exact Fourier transform, convolution, but not division and composition.

http://code.haskell.org/numericprelude/src/MathObj/Gaussian/Polynomial.hs
http://users.informatik.uni-halle.de/~thielema/Research/fourieralgebra.pdf

Is there some libraries which allow me to work with functions as if their type was (Double -> Double), but indeed it was something faster?

No, you have to use a special type for the particular function representation and use an 'apply' function, that converts your representation to a real function:

  apply :: FunctionRepresentation a b -> a -> b

You can also define an infix operator

  ($$) :: FunctionRepresentation a b -> a -> b

and then write

  f $$ x

where you would have written (f x) if 'f' would be a function and not a function representation.

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to