Syntactic Confectionery Delight  
PerlMonks 
Re: Calculating eby Albannach (Monsignor) 
on Jul 18, 2001 at 06:21 UTC ( #97518=note: print w/replies, xml )  Need Help?? 
Not only is mdillon's solution correct, it's also much more
efficient as each factorial is simply one multiply on the
previous one, whereas calling the function each time means a lot more
work is being done.
Now the reason for the failure is that the Math::NumberCruncher function overflows for 171!. Unfortunately it returns '1.#INF' which Perl happily treats as 1.0 in your division, so you simply divide by one from that point on, not making much more progress. Update: While Math::NumberCruncher does not use BigFloats for it's factorial function, it does already use the Math::BigFloat module for storing its very large version of $PI (though strangely BigFloats are not used in calculations with that $PI so it's probably pointless...), so it is a trivial matter to patch Math::NumberCruncher to use a BigFloat for the factorial. This is of course for occasional uses as for an iterative use of factorial mdillon's answer is still much faster. 
In Section
Seekers of Perl Wisdom

