in reply to Calculating e

This is just a guess based on my knowledge of C and how it treats mathematical terms, but...

I think that the line $e += 1 / $fac; is the culprit. While $e is a BigFloat, my guess would be that the result of the division of 1 and $fac would be a number of the same type as $fac. Thus while $e supports arbitrary precision, 1 / $fac does not support such a high precision