At Wednesday 3/1/2007 22:10, Michael M. wrote:
Ok, here is the code. It is a translation of the following code, found
on the internet.
* The C is very fast, Python not.
* Target: Do optimization, that Python runs nearly like C.
Why? Python is strong in other aspects, *not* on computation speed.
Anyway, for a nice and rather fast Python implementation (yielding
unlimited digits *without* unlimited storage), see
http://mail.python.org/pipermail/python-list/2006-November/414347.html
The code, for reference:
def pi():
k, a, b, a1, b1 = 2, 4, 1, 12, 4
while 1:
# Next approximation
p, q, k = k*k, 2*k+1, k+1
a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
# Yield common digits
d, d1 = a/b, a1/b1
while d == d1:
yield str(d)
a, a1 = 10*(a%b), 10*(a1%b1)
d, d1 = a/b, a1/b1
import sys
sys.stdout.writelines(pi())
(The converted C code does a lot of nonsense in Python terms - maybe
you should try to interpret *what* it does and then reimplement that
using Python)
--
Gabriel Genellina
Softlab SRL
__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
--
http://mail.python.org/mailman/listinfo/python-list