Kaydet (Commit) 4040ed01 authored tarafından Guido van Rossum's avatar Guido van Rossum

Add test for mpz module

üst 386a554f
...@@ -31,6 +31,7 @@ lpwatch.py Watch BSD line printer queues ...@@ -31,6 +31,7 @@ lpwatch.py Watch BSD line printer queues
markov.py Markov chain simulation of words or characters markov.py Markov chain simulation of words or characters
methfix.py Fix old method syntax def f(self, (a1, ..., aN)): methfix.py Fix old method syntax def f(self, (a1, ..., aN)):
mkreal.py Turn a symbolic link into a real file or directory mkreal.py Turn a symbolic link into a real file or directory
mpzpi.py test mpz -- print digits of pi (compare pi.py)
objgraph.py Print object graph from nm output on a library objgraph.py Print object graph from nm output on a library
pathfix.py Change #!/usr/local/bin/python into something else pathfix.py Change #!/usr/local/bin/python into something else
pdeps.py Print dependencies between Python modules pdeps.py Print dependencies between Python modules
......
#! /usr/local/bin/python
# Print digits of pi forever.
#
# The algorithm, using Python's 'long' integers ("bignums"), works
# with continued fractions, and was conceived by Lambert Meertens.
#
# See also the ABC Programmer's Handbook, by Geurts, Meertens & Pemberton,
# published by Prentice-Hall (UK) Ltd., 1990.
import sys
from mpz import mpz
def main():
mpzone, mpztwo, mpzten = mpz(1), mpz(2), mpz(10)
k, a, b, a1, b1 = mpz(2), mpz(4), mpz(1), mpz(12), mpz(4)
while 1:
# Next approximation
p, q, k = k*k, mpztwo*k+mpzone, k+mpzone
a, b, a1, b1 = a1, b1, p*a+q*a1, p*b+q*b1
# Print common digits
d, d1 = a/b, a1/b1
while d == d1:
output(d)
a, a1 = mpzten*(a%b), mpzten*(a1%b1)
d, d1 = a/b, a1/b1
def output(d):
# Use write() to avoid spaces between the digits
# Use int(d) to avoid a trailing L after each digit
sys.stdout.write(`int(d)`)
# Flush so the output is seen immediately
sys.stdout.flush()
main()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment