On Mon, Apr 23, 2007 at 01:06:07PM -0500, Dan Drake wrote: > Hello everyone, > > I have some code in which the bottleneck is the factorial function. I > began by using a naive > > fac n = product [1..n] > > but it looks like there are faster ways to do it. I could try to look up > those faster algorithms and implement them, but I'm guessing that using > libgmp's factorial function is the best way to do it. I'm a poor > programmer, so I don't trust myself to implement those algorithms > properly. Hence I need to use FFI. > > ...but ghc already uses libgmp for Integers, so shouldn't I be able to > somehow call libgmp's factorial function? > > Using regular FFI stuff, it looks like this might get complicated, since > the function doesn't return one of the usual foreign types, so I'd need > to mess around to get the result into an Integer, which is what I need. > > Is there an easy way to do this? It might also be faster to use a lookup > table, since most of the time I'll be taking factorials of relatively > small numbers.
In addition to David's comments, note that there was a huge thread on fast fibonaccis recently, including a FFI fibonacci.. Note that the fastest haskell fibonacci was 3 LoC and only 25% slower than the one in libgmp. http://haskell.org/pipermail/haskell-cafe/2007-February/022647.html Stefan _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe