def Exp2(x): """Use reduction formula to evaluate very large Exponentials quickly.""" prec = x.getprec() x = gmpy.mpf(x,prec+1) i = 1 sign = 0 if x < 0: sign = 1 x = -x l = bit_length(gmpy.mpz(x)) print l x /= gmpy.mpz(1) << l y = gmpy.mpf(0,prec+1) t = gmpy.mpf(1,prec+1) oy = y while(1): y += t t *= x t /= i if (oy - y) == 0: break oy = y i += 1 for i in range(l): y*=y if(sign): y = 1/y return gmpy.mpf(y, prec)