Re: [Edusig] followup to older post... re Pi generator
Thanks! It's pretty clearly using a generalized continued fraction
algorithm converging to pi, but I'm not clear on which  it's
excruciatingly clever ;)
Here are some possibilities for those motivated enough to dig into it:
https://en.wikipedia.org/wiki/Continued_fraction#Generalized_continued_fract...
On Tue, Sep 29, 2015 at 12:23 PM, Guido van Rossum
I adapted this from an ABC program by Lambert Meertens. I don't know where he got it from, but I wouldn't be surprised if he came up with it himself. The algorithm basically shows off rational arithmetic in either language.
On Tue, Sep 29, 2015 at 10:03 AM, kirby urner
wrote: Wow, I never even guessed Guido had anything to do with this code. The world shrinks again!
Fun!
Kirby
On Tue, Sep 29, 2015 at 9:41 AM, Tim Peters
wrote: Copying Guido because he's the actual original author of this code. I remember it being in a very early intro to Python, which I can't find now. And it used to be included in a Python distribution's Demo directory. But, e.g., you can see it in this mailing list message from Guido in 1994, during an early discussion of what eventually became Python's generators. Guido, do you remember where this algorithm came from?
http://legacy.python.org/search/hypermail/python1994q2/0429.html scroll down to point "6)"
[kirby urner
] I'm still interested in finding more bibliographic sources for this one, not necessarily in Python syntax i.e. did Euler come up with this or who?
def pi_digits():
k, a, b, a1, b1 = 2, 4, 1, 12, 4 while True: p, q, k = k*k, 2*k+1, k+1 a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1 d, d1 = a/b, a1/b1 while d == d1: yield int(d) a, a1 = 10*(a%b), 10*(a1%b1) d, d1 = a/b, a1/b1
[ http://mail.python.org/pipermail/edusig/2012December/010728.html ]
> pi = pi_digits() > "".join([str(next(pi)) for i in range(100)]))
'3141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067'
... so far what we know is some high school student handed it in for homework.
 Guido van Rossum (python.org/~guido)
participants (1)

Tim Peters