
ajb@spamcop.net wrote:
Yes and no. Standard algorithms for computing and manipulating combinatorial-sized Integers strongly depend on the properties of your Integer implementation.
Manipulating lists of prime factors can also be more efficient, because most of the numbers you deal with are machine-word-sized.
Yep. By the way, if approximations are good enough, the OP could use Gosper's formula: gosper :: Integral a => a -> a gosper n | n < 143 = let n' = fromIntegral n g = sqrt ((n' * 2 + 1/3) * pi) * n'**n' * exp (-n') in round g The accuracy of this approximation increases with n, until you hit the ceiling of whatever your Double implementation can manage (142, typically).