Vous êtes sur la page 1sur 4

CLEVES CORNER

Computing
By Cleve Moler

Computing hundreds, or trillions, of digits of has long been used to stress hardware, validate software, and establish bragging rights. MATLAB implementations of the most widely used algorithms for computing illustrate two different styles of arithmetic available in Symbolic Math Toolbox: exact rational arithmetic and variable-precision floating-point arithmetic.

formidable formula discovered by David and Gregory Chudnovsky in 1987.

ast August, two computer hobbyists, Alexander Yee and Shigeru Kondo, announced that they had set a world record by computing 5trillion digits of (Figure 1). Their computation took 90 days on a homebrew PC. Yee is now a graduate student at the University of Illinois. His computing software, y-cruncher, began as a class project at Palo Alto High School. Kondo is a systems engineer who assembles personal computers at his home in Japan. The machine that Cleve's Corner: Computing he built for this project (Figure 2) has two Intel Xeon processors Computing hundreds, or trillions, of digits of has long been used to stress hardware, validate software, and establish bragging rights. implementations of the most used algorithms for external hard with a total of 12 MATLAB cores, 96 gigabytes ofwidely RAM, and 20 computing illustrate two different styles of arithmetic available in Symbolic Math Toolbox: exact rational arithmetic and variable-precision floating-point of arithmetic. disks with a combined capacity 32 terabytes. Last August, two computer hobbyists, Alexander Yee and Shigeru Kondo, announced that they had The computation of 5 trillion digits is a huge processing task set a world record by computing five trillion digits of . Their computation took 90 days on a homebrew PC. Yee is now a graduate student at the University of Illinois. His computing software, y-cruncher, where the time required for the data movement is just as important began as a class project at Palo Alto High School. Kondo is a systems engineer who assembles personal computers at his home in Japan. The machine that he built for this project (Figure 1) has two Intel Xeons as the time required for the arithmetic. with a total of 12 cores, 96 gigabytes of RAM, and 20 external hard disks with a combined capacity of 32 terabytes. y-cruncher uses several different formulas for computation and The computation of five trillion digits is a huge processing task where the time required for the data verification. The primary toolfor is a arithmetic. formidable formula discovered by movement is just as important as the time required the y-cruncher usesGregory several different formulas for computation and verification. The primary tool is a David and Chudnovsky in 1987:

Figure 1. A log plot of the data from the Wikipedia article Chronology of computation of pi showing how the world record for number of digits has increased over the last 60 years. A linear fit to the logarithm reveals a Moores Law phenomenon. The number of digits doubles about every 22.5 months.

time and storage requirements. Quotients and roots are not computed unless the result is an exact integer.

The Chudnovsky brothers, who were the subject of two fascinating articles in The New Yorker and a NOVA documentary, have also High-Precision Arithmetic in Symbolic Math Toolbox built homebrew computers in their apartment in Manhattan. The Symbolic Math Toolbox provides two styles of high-precision arithmetic, sym and vpa. massively parallel machine that they assembled from commodity The sym function initiates exact rational arithmetic: Arithmetic quantities are represented by quotients large integers. Integer length increases necessary, limited only by computer parts and in roots theof1990s was considered aassupercomputer at the time.

The Chudnovsky brothers, who were the subject of two fascinating articles in the New Yorker and a NOVA documentary, have also built home brew computers in their apartment in Manhattan. The massively parallel machine that they assembled from commodity parts in the 1990s was considered a supercomputer at the time.

The vpa function initiates variable-precision floating-point arithmetic : Arithmetic quantities are represented by decimal fractions of a specified length together with a power-of-10 exponent. Arithmetic operations, including divisions and roots, can involve roundoff errors at the level of the specified accuracy. For example, the MATLAB statement
p = rat(pi)

High-Precision Arithmetic in Symbolic Math Toolbox Symbolic Math Toolbox provides two styles of high-precision arithArithmetic operations, including divisions and roots, can involve roundoff errors at the level of the specified accuracy.For example, the MATLAB statement metic: sym and vpa. p = rat(pi) The sym function initiates exact rational arithmetic : Arithmetic quantities are represented by quotients and roots of large integers. Integer length increases as necessary, limited only by computer time and storage requirements. Quotients and roots are not computed unless the result is an exact integer.
The vpa function initiates variable-precision floating-point arithmetic: Arithmetic quantities are represented by decimal fractions of a specified length together with a power-of-ten exponent.

produces three terms in the continued fraction approximation of


p = 3 + 1/(7 + 1/16)

Then the statement

sym(p)

yields the rational expression


355/113

which is an attractive alternative to the familiar 22/7. On the other hand, the statement
vpa(p,8)
produces three terms in the continued fraction approximation of p = 3 + 1/(7 + 1/16)

produces the 8-digit floating-point value


3.1415929

Then the statement

The Chudnovsky Algorithm

The Chudnovsky Algorithm Our MATLAB programs implement three of the hundreds of possible 355/113 algorithms for computing . The Chudnovsky algorithm (Figure 3) which is an attractive alternative to the familiar 22/7 . On the other hand, the statement vpa(p,8) uses exact rational arithmetic until the last step. Each term in the produces the 8-digit floating-point value Chudnovsky series provides about 14 decimal digits, so to obtain d 3.1415929 digits requires [d/14] terms. For example, the statement
yields the rational expression

sym(p)

Figure 2. Shigeru Kondos homebrew PC, which currently holds the world record for computing digits of .

function P = chud _ pi(d) % CHUD _ PI Chudnovsky algorithm for pi. % chud _ pi(d) produces d decimal digits. k = sym(0) ; s = sym(0) ; sig = sym(1) ; n = ceil(d/14) ; for j = 1:n s = s + sig * prod(3*k+1:6*k) /prod(1:k)^3 * ...

Our MATLAB programs implement three of the hundreds of possible algorithms for computing . The Chudnovsky algorithm (Figure 2) uses exact rational arithmetic until the last step. Each term in the chud_pi(42) Chudnovsky series provides about 14 decimal digits, so to obtain d digits requires terms. For example, the statement chud_pi(42) uses exact rational computation to produce uses exact rational computation to produce

and then the final step uses variable-precision floating-point arithmetic with 42 digits to produce

and then the final step uses variable-precision floating-point arithmetic 3.14159265358979323846264338327950288419717 with 42 digits to the produce One interesting fact about digits of is revealed by
chud_pi(775)

(13591409+545140134*k) / 640320^(3*k+3/2) ; k = k+1; sig = -sig; end S = 1/ (12*s) ; P = vpa(S,d) ;

or

3.14159265358979323846264338327950288419717
vpa(pi,775)

One interesting fact about the digits of is revealed by


chud_pi(775)

Figure 3. MATLAB implementation of the Chudnovsky algorithm, using sym to initiate exact rational arithmetic.

or
vpa(pi,775)

These both produce 775 digits, beginning and ending with


3.141592653589793238 ...... 707211349999998372978

We see not only that chud_pi is working correctly but also that there are six 9s in a row around position 765 in the decimal expansion of (Figure 4). Computing 5000 digits with chud_pi requires 358 terms and takes about 20 seconds on my laptop. The final symbolic expression contains 12,425 characters.

The Chudnovsky formula is a power of series : Eachnumbers, new term in the(a+b)/2 partial sum,adds fixed number of Such exactgood symbolicapproximation expressions are computationally unwieldy and inefficient. With vpa,with however, the iteration. The arithmetic mean two is a always greater to . The complexity doubles each digits of accuracy. The algebraic-geometric mean algorithm is completely different; it is quadratically quadratic convergence can be seen in the successive iterates: convergent : Each new iteration doubles the number of correct digits. The agm algorithm has a long mean, than their geometric mean, ab . Their arithmetic-geometric Such exact symbolic expressions are computationally unwieldy The arithmetic mean two numbers, (a+b )/2, is greater than their geometric mean, . 3.2 history dating back to Gauss and Legendre. Itsof ability to compute was discovered independently byalways or agm(a,b) , is computed by repeatedly taking arithmetic and geo3.142 and inefficient. With vpa, however, the quadratic convergence can Richard Brent and Eugene Salamin in 1975. Their arithmetic-geometric mean, or agm(a,b), is computed by repeatedly taking arithmetic and 3.1415927 metric means. Starting with = a and b = b , iterate be seen in the successive iterates: 3.141592653589793 The arithmetic mean of two numbers, (a+ba )/2, is always greater than their geometric mean, . 0 0 geometric means. Starting with a = a and b = b, iterate

2 1 1 2 The Algebraic-Geometric Mean Algorithm 2 2 12 2 2 + 2 2 1 2 1 2 2 11 1 2 1 8 2 4 4 4 2 2 ++ TheAlgebraic-Geometric Chudnovsky formula is a power series : Each new term in the partial 2 The Mean Algorithm 2 8 2 44 4 4 22 8 2 4 4 These both produce 775 digits, beginning and endingof with sum adds a fixed number of digits accuracy. The algebraic-geometric to . The The decimal value of this monstrosity is 3.14168, so it is not yet a very good approximation 3.141592653589793238 ...... 707211349999998372978 mean algorithm is completely different; it is quadratically convergent : The Chudnovsky formula is a power series: Each new term in the partial sum addssoa fixed number of to . The complexity doubles with each iteration. The decimal value this monstrosity is 3.14168, it not is not yet a very good approximation The decimal value of of this monstrosity is 3.14168, so it is yet a very good approximation to . The We see of not only that chud_pi isThe workingalgebraic-geometric correctly but also that there are six 9sdigits. in a row around complexity doubles with each iteration. Each new iteration doubles the number of correct The agm al- complexity digits accuracy. mean algorithm is completely different; it is quadratically doubles with each iteration. Such exact symbolic expressions are computationally unwieldy and inefficient. With vpa, however, the position 765 in the decimal expansion of (Figure 4). quadratic convergence can be seen in the successive unwieldy iterates: and inefficient. With vpa, however, the Such exact symbolic expressions are computationally gorithm has:a Each long history dating backdoubles to Gauss and Legendre. Its abilSuch exact symbolic expressions are computationally unwieldy and inefficient. With vpa, however, the convergent new iteration the number of correct digits. The agm algorithm has a long Computing five thousand digits with chud_pi requires 358 terms and takes about 20 seconds on my quadratic convergence can seen in the successive iterates: quadratic convergence can bebe seen in the successive iterates: 3.2 laptop. The final symbolic expression contains 12,425 characters. ity to compute was discovered independently by Richard Brent and history dating back to Gauss and Legendre. Its ability toThe compute was discovered independently by 3.142 3.2 decimal3.2 value of this monstrosity is 3.14168, so it is not yet a very good approximation to . The The Algebraic-Geometric Mean Algorithm 3.142 Eugene Salamin in 1975. complexity doubles each iteration. Thewith decimal value of this monstrosity is 3.14168, so it is not yet a very 3.142 Richard Brent and Eugene Salamin in 1975.

20 seconds on my Computing five thousand digits with chud_pi requires 358 terms and takes about laptop. The final symbolic expression contains 12,425 characters. 2 2

Our MATLAB function for the agm algorithm (Figure 5) uses variable-precision floating-point arithmetic from the very beginning. We see not only that chud_pi is working correctly but also that there are six 9s a row around 2 22 in 2 1 23) If we usedfor symbolic rational arithmetic, we would end up with a nest2 Our MATLAB function the agm algorithm (Figure uses variable- precision floating-point 2 position 765 in the decimal expansion of (Figure 4). arithmetic + +1 from the very beginning. If we used symbolic arithmetic, we would end up with a 2 Figure 4. 10,000 digits of , visualized in MATLAB. Can you see the six 2 4 2 rational 28 1 2 ed sequence of After square roots. After just two iterations we would have + + nested sequence of square roots. just two iterations we would have + +
consecutive 9s in the eighth row?

During the iteration, keep track of the changes, During the iteration, keep track of the changes, During the iteration, keep track the changes, During the iteration, keep track of track theof changes, During the iteration, keep of the changes, During the iteration, keep track of the changes, During the iteration, keep track of the changes, cn = an+1 - an an+1 an cn == an+1 -an c n Finally, let Finally, let Finally, let Finally, let Finally, letlet Finally, Finally, let 1 2 S = 1 =0 2 14 2 2 S = 2 S= 4 =0 2 =0 4 Then Then Then Then Then Then Then 2 22 = These both produce 775 digits, beginning and ending with = = for the agm algorithm (Figure 3) uses variable- precision floating-point Our MATLAB function arithmetic from the very beginning. If we used symbolic rational arithmetic, we would end up with a Our MATLAB function the agm algorithm (Figure uses variableprecision floating-point 3.141592653589793238 ...... 707211349999998372978 Our MATLAB function forfor the agm algorithm (Figure 3) 3) uses variableprecision floating-point nested sequence of square roots. After just two iterations we would have
arithmetic from the very beginning. If we used symbolic rational arithmetic, we would end with arithmetic from the very beginning. If we used symbolic rational arithmetic, we would end upup with a a nested sequence square roots. After just two iterations we would have nested sequence of of square roots. After just two iterations we would have 2

= = bn+1 = = = until a= n and bn agree to a desired accuracy. For example, the arithmetic mean of 1 and 9 isFor 5, the until anand and bnagree agree to a a desired desired accuracy. example, the arithm until a b to accuracy. For example, the arithm n and b nagree geometric mean is 3, and the agm is 3.9362. until a to a desired accuracy. For example, the arithme n n geometric mean is 3, and the agm is 3.9362. geometric mean is 3, and the agm is 3.9362. geometric mean isproperties 3, and theof agm isagm 3.9362. The powerful the lie not just in The powerful properties ofresults the agm lie not just in the final value the final value but also in the generated The powerful powerfulproperties propertiesof of the agm lie not just the final valu The the agm lie not just inin the final value along the way. Computing isis just one example. compu along the way.Computing Computing just one example.It Itinvolves along the way. is just one example. It involves comp along the way. Computing is just one example. It involves comput involves computing ( ) M = agm((1,1/2))

22

88 44

22

0 Their arithmetic-geometric mean, or agm(a,b), is computed by 0 repeatedly taking arithmetic and geometric means. Starting with a0 = a and b0 = b, iterate

3.1415926535897932384626433832795 3.141592653589793238462643383279502884197169399375105820974944592

3.2 3.142 The quadratic convergence makes agm very fast. To compute 100,000 digits requires only 17 steps 2 and about 2.5 seconds on my laptop. 3.1415927 = bn+1 = The BBP Formula 3.141592653589793 Yee spot-checked his computation with the BBP formula. This formula, named after David Bailey, 3.1415926535897932384626433832795 Jonathan Borwein, and Simon Plouffe and discovered by Plouffe in 1995, is a power series involving until an and bn agree to a desired accuracy. For inverse powers of 16. until a b agree to a desired accuracy. For example, the arithmetic mean of 1 and 9 is 5, the until a and b agree to a desired accuracy. For example, the arith3.141592653589793279502884197169399375105820974944592 n nand n n arithmetic mean of 1 and 9 is 5, the example, the geometric mean is 3, and the agm is 3.9362. metic mean of 1 andis 9 3, is 5, thethe geometric is 3, and the agm geometric mean and agm ismean 3.9362. is 3.9362. The sixth entry in this output has 64 correct digits, and the tenth Thepowerful properties of the agm lie not not just invalue powerful properties of the agm lie just in the final value has 1024.but also in the results generated The properties of the agm lie not just in the final thealso final value butgenerated also in the results generated along the way. Computing is just one example. Itinvolves but in the results along the way. Computing is just computing The quadratic convergence makes agm very fast. To compute 100,000 along the way. Computing is just one example. It digits requires only 17 steps and about 2.5 seconds on my laptop. one example. It involves computing

an+1 = =

The tenth entry is this output would have 1024 correct digits.

involves computing ( )

M= agm (1,1/2)keep track of the changes, During the iteration,


3

Finally, let

function P = agm _ pi(d) % AGM _ PI Arithmetic-geometric mean for pi. % agm _ pi(d) produces d decimal digits.
Our MATLAB function for the agm algorithm (Figure 3) uses variable- precision floating-point arithmetic from the very beginning. If we used symbolic rational arithmetic, we would end up with a digits(d) nested sequence of square roots. After just two iterations we would have

References Alexander J. Yee and Shigeru Kondo, 5 Trillion Digits of Pi, August 2, 2010. www.numberworld.org/misc_runs/pi-5t/details.html

a = vpa(1,d) ;

b = 1/sqrt(vpa(2,d) ) ; s = 1/vpa(4,d) ; p = 1; n = ceil(log2(d) ) ; for k = 1:n c = (a+b) /2; b = sqrt(a*b) ; s = s - p*(c-a)^2; p = 2*p;
The decimal of this monstrosity is 3.14168, so it is not yet a very good approximation to . The a value = c; complexity doubles with each iteration.

Richard Preston, The Mountains of Pi, The New Yorker, March 2, 1992. www.newyorker.com/archive/1992/03/02/1992_03_02_036_TNY_ CARDS_000362534 Richard Preston, Capturing the Unicorn, The New Yorker, April 11, 2005. www.newyorker.com/archive/2005/04/11/050411fa_fact Brothers Chudnovsky, PBS, NOVA, July 26, 2005. www.pbs.org/wgbh/nova/physics/chudnovsky-math.html David Bailey, Jonathan Borwein, Peter Borwein, and Simon Plouffe, The Quest for Pi, Mathematical Intelligencer 19, pp. 50-57, 1997. http://crd.lbl.gov/~dhbailey/dhbpapers/pi-quest.pdf Jonathan M. Borwein and David H. Bailey, Mathematics by Experiment: Plausible Reasoning in the 21st Century, AK Peters, Natick, MA, 2008. Chronology of computation of pi, Wikipedia, March 9, 2011. http://en.wikipedia.org/wiki/Chronology_of_computation_of_

end

Such exact symbolic expressions are computationally unwieldy and inefficient. With vpa, however, the P = a^2/s; quadratic convergence can be seen in the successive iterates: 3.142 5. MATLAB implementation of the arithmetic-geometric mean Figure 3.1415927 algorithm, using digits and vpa to initiate variable-precision floating3.141592653589793 3.1415926535897932384626433832795 point arithmetic. 3.141592653589793238462643383279502884197169399375105820974944592 The tenth entry is this output would have 1024 correct digits. 3.2

The BBP Formula The quadratic convergence makes agm very fast. To compute 100,000 digits requires only 17 steps and about 2.5 seconds on my laptop. Yee spot-checked his computation with the BBP formula. This for-

after David Bailey, Jonathan Borwein, and Simon Plouffe and discovered bywith Plouffe in 1995,This is a power series involving Yee spot-checked his computation the BBP formula. formula, named after David Bailey, Jonathan Borwein, and Simon Plouffe and discovered by Plouffe in 1995, is a power series involving inverse powers of 16: inverse powers of 16.

The BBP Formula mula, named

The remarkable property of the BBP formula is that it allows the computation of several consecutive hexadecimal digits in the base 16 expansion of without computing the earlier digits and without using extra-precision arithmetic. A formula for the hex digits starting at position d is obtained by simply multiplying this formula by 16d and then taking the fractional part. I cant resist concluding that BBP can be used to compute just a piece of . Our BBP program is too long to be included here, but all three programs, chudovsky_pi, agm_pi, and bbp_pi, are available for download on MATLAB Central.

Learn More
Download: MATLAB Implementations of the Chudnovsky, agm, and BBP Algorithms mathworks.com/computing-pi Cleve's Corner Collection mathworks.com/clevescorner

Published 2011 91954v00

mathworks.com
2011 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand names may be trademarks or registered trademarks of their respective holders.

Vous aimerez peut-être aussi