Calculating number Pi digits in C

  • Thread starter Thread starter AliGh
  • Start date Start date
  • Tags Tags
    Pi
AI Thread Summary
The discussion revolves around calculating the digits of Pi using C programming, with various methods suggested, including integration, Leibniz's series, Wallis's series, and the Bailey-Borwein-Plouffe formula. The original poster expresses frustration over a lack of guidance from university teachers and peers, raising concerns about their coding experience. The conversation highlights the need for handling large numbers in C, as standard data types are insufficient for high precision calculations. Suggestions include using arrays and specialized libraries like MPIR or Apfloat for managing large numbers. The complexity of algorithms for calculating Pi is acknowledged, with a focus on the necessity of understanding multi-digit number representation and arithmetic operations.
AliGh
Messages
64
Reaction score
1
Hi
I was thinking about calculating Pi digits (for example up to 1000) using C programming
Unfortunately there seems to be no one in our university to know how (even teachers)
I know that i have to use arrays but i don't know how
And i don't know what is the best way to do it ?
-4 times the integration of (1-x^2)^(1/2) for 0 to 1
- Leibniz's series
-Wallis's series
- or ...
 
Technology news on Phys.org
  • Like
Likes Dr. Courtney and Silicon Waffle
Integrand said:
Check out https://en.wikipedia.org/wiki/Bailey–Borwein–Plouffe_formula

There are very many methods available. What qualifies as "best" for you?

Incidentally, that no teachers in your university know how to calculate digits of pi seems a little implausible, don't you think? :)

No , the teacher connected his laptop to projector while he was teaching C his typing speed wasn't much different of a beginner ... I think he was two-finger typing
Still seems implausible ? FYI I am from iran.
 
  • Like
Likes aikismos
What does typing speed have to do with knowing how to find the digits of pi? And the question was about all the teachers at your school so why refer to just one?
 
  • Like
Likes DrClaude and Silicon Waffle
HallsofIvy said:
What does typing speed have to do with knowing how to find the digits of pi? And the question was about all the teachers at your school so why refer to just one?
This is university ... The teacher (or should i call university teachers professor ?) got his degree from the best university in Iran .. it shows that he doesn't have much experience ... Just ask him intermediate questions and he can't answer more than half of them
I asked fifth semester students they couldn't
 
AliGh said:
This is university ... The teacher (or should i call university teachers professor ?) got his degree from the best university in Iran .. it shows that he doesn't have much experience ... Just ask him intermediate questions and he can't answer more than half of them
I asked fifth semester students they couldn't
Perhaps this is a language problem- you did not respond to either of my questions.
 
I think we should stick to the topic of the thread, discussing numerical methods to calculate π.
 
HallsofIvy said:
What does typing speed have to do with knowing how to find the digits of pi? And the question was about all the teachers at your school so why refer to just one?
First that typing faster means you had more experience coding (and you wrote a bigger variety of programs) but this one is way beyond slow
Second that I'm first semester i don't know any other teachers and they won't answer unless they know me
 
  • #10
Integrand said:
Check out https://en.wikipedia.org/wiki/Bailey–Borwein–Plouffe_formula

There are very many methods available. What qualifies as "best" for you?

Incidentally, that no teachers in your university know how to calculate digits of pi seems a little implausible, don't you think? :)
How is that formula can calculate Nth digit of Pi i don't get it
 
  • #11
To get the N't hexadecimal digit you still need to sum n terms (and a few more to prevent roundoff errors), but it's easy to get the nth hexadecimal digit of a single term. The factors of 1/16 will only shift the term 1 digit to the right, the numbers like 4/(8k+1) are rational numbers with a repeating hexadecimal expansion.
You only need to calculate the digits N through N+20 or so from all the terms to produce the Nth digit of the sum. For the billionth digit you still need to sum a billion terms, but the calculations involve only numbers of 20 digits.
 
  • #12
willem2 said:
To get the N't hexadecimal digit you still need to sum n terms (and a few more to prevent roundoff errors), but it's easy to get the nth hexadecimal digit of a single term. The factors of 1/16 will only shift the term 1 digit to the right, the numbers like 4/(8k+1) are rational numbers with a repeating hexadecimal expansion.
You only need to calculate the digits N through N+20 or so from all the terms to produce the Nth digit of the sum. For the billionth digit you still need to sum a billion terms, but the calculations involve only numbers of 20 digits.
Sorry still confused .. can you write algorithm ?
 
  • #13
What you need is much more complicated than an algorithm (I can direct you to several). You need a way to represent multi-digit numbers with associated arithmetic operations in a consistent way. Fortunately, somebody else has seen the need and created the appropriate definitions and libraries - see http://mpir.org/.
 
  • #14
Svein said:
What you need is much more complicated than an algorithm (I can direct you to several). You need a way to represent multi-digit numbers with associated arithmetic operations in a consistent way. Fortunately, somebody else has seen the need and created the appropriate definitions and libraries - see http://mpir.org/.
What i actually need is way to deal with the fact that i can't work with great numbers in C i don't know what the problem is
The Leibniz's series i said up there , is a summation . I couldn't calculate it because double variable types had limited digits ... i tried multiplying by 10^n and result%10 so that i could get nth digit but it didn't work ...
Is there any possibility that i can use arrays to solve the problem ? or it takes too much memory ?
Or any not very complicated way that i can at least understand ?
 
  • #15
  • #16
AliGh said:
What i actually need is way to deal with the fact that i can't work with great numbers in C i don't know what the problem is
Follow the link! Those people have defined numbers with more than a million digits - the record for π is more than 13 trillion digits (see https://en.wikipedia.org/wiki/Approximations_of_π).
 
Back
Top