Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Print particular digits of pi

  1. Nov 13, 2011 #1
    Hi! I'm using MATLAB and I want to store or print some particular decimal digits of pi, from 9901 to 10000. I'm using the algorithm below (Brent-Salamin algorithm) to print the first 10000 digits but I can't find out a way to save and print only the decimal digits from 9901 to 10000. What function can I use? Any ideas?

    Code (Text):
     function P = agm_pi(d)
    % AGM_PI  Arithmetic-geometric mean for pi.
    % Brent-Salamin algorithm.
    % agm_pi(d) produces d decimal digits.
    % See Cleve's Corner, "Computing Pi",
    % http://www.mathworks.com/company/ ...
    %    newsletters/news_notes/2011/

    % Copyright 2011 MathWorks, Inc.
    digits(d)
    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;
       a = c;
    end
    P = a^2/s;
    http://en.wikipedia.org/wiki/Gauss–Legendre_algorithm
     
    Last edited: Nov 13, 2011
  2. jcsd
  3. Nov 16, 2011 #2

    MATLABdude

    User Avatar
    Science Advisor

    Well, MATLAB by default represents numbers as double-precision floating points:
    http://www.mathworks.com/help/techdoc/matlab_prog/f2-12135.html [Broken]

    That means that you only have 53 bits for your fraction (in decimal terms, about 16 significant figures):
    http://en.wikipedia.org/wiki/Double_precision

    You can see where the problem arises when you try to calculate beyond 16 decimal places using the implementation provided (and no, you can't try to do something sneaky like multiplying the answer by 10^16!)

    I had a similar problem as a homework assignment in undergrad once (and I suspect that this is something similar)--the above insight provided the critical hint that I needed to come up with a solution, and may do the same for you.

    HINT: how big can you make a vector (1 x n, or n x1 array) in MATLAB?
     
    Last edited by a moderator: May 5, 2017
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook




Similar Discussions: Print particular digits of pi
Loading...