I'm writing a demo of the infinite series x**0/0! + x**1/1! + x**2/2! + x**3/3! + ... = e**x (x is non-negative)
It works OK for many x, but for many the loop doesn't break. Is there a way to get it to break where I want it to, i.e., when the sum equals the limit as closely as the precision allows? Here's what I have: ======= series_xToN_OverFactorialN.py ========================== #!/usr/bin/env python #coding=utf-8 # series_xToN_OverFactorialN.py limit is e**x from p.63 in The Pleasures of Pi,e from mpmath import mpf, e, exp, factorial import math import time precision = 100 mpf.dps = precision n = mpf(0) x = mpf(raw_input("Enter a non-negative int or float: ")) term = 1 sum = 0 limit = e**x k = 0 while True: k += 1 term = x**n/factorial(n) sum += term print " sum = %s k = %d" % (sum, k) print "exp(%s) = %s" % (x, exp(x)) print " e**%s = %s" % (x, e**x) print if sum >= limit: print "math.e**%s = %f" % (x, math.e**x) print "last term = %s" % term break time.sleep(0.2) n += 1 """ Output for x == mpf(123.45): sum = 410822093109668964239148908443317876138879647013995774.2951431466270782257597573259486687336246984942 k = 427 exp(123.45) = 410822093109668964239148908443317876138879647013995774.2951431466270782257597573259486687336246984942 e**123.45 = 410822093109668964239148908443317876138879647013995774.2951431466270782257597573259486687336246984942 """ ==================================================== This is also on the web at <http://python.pastebin.com/f1a5b9e03>. Examples of problem x's: 10, 20, 30, 40, 100, 101 Examples of OK x's: 0.2, 5, 10.1, 11, 33.3, 123.45 Thanks, Dick Moores -- http://mail.python.org/mailman/listinfo/python-list