How to resolve the algorithm Arithmetic-geometric mean/Calculate Pi step by step in the Rust programming language
How to resolve the algorithm Arithmetic-geometric mean/Calculate Pi step by step in the Rust programming language
Table of Contents
Problem Statement
Almkvist Berndt 1988 begins with an investigation of why the agm is such an efficient algorithm, and proves that it converges quadratically. This is an efficient method to calculate
π
{\displaystyle \pi }
. With the same notations used in Arithmetic-geometric mean, we can summarize the paper by writing:
π
4
a g m
( 1 , 1
/
2
)
2
1 −
∑
n
1
∞
2
n + 1
(
a
n
2
−
g
n
2
)
{\displaystyle \pi ={\frac {4;\mathrm {agm} (1,1/{\sqrt {2}})^{2}}{1-\sum \limits {n=1}^{\infty }2^{n+1}(a{n}^{2}-g_{n}^{2})}}}
This allows you to make the approximation, for any large N:
π ≈
4
a
N
2
1 −
∑
k
1
N
2
k + 1
(
a
k
2
−
g
k
2
)
{\displaystyle \pi \approx {\frac {4;a_{N}^{2}}{1-\sum \limits {k=1}^{N}2^{k+1}(a{k}^{2}-g_{k}^{2})}}}
The purpose of this task is to demonstrate how to use this approximation in order to compute a large number of decimals of
π
{\displaystyle \pi }
.
Let's start with the solution:
Step by Step solution about How to resolve the algorithm Arithmetic-geometric mean/Calculate Pi step by step in the Rust programming language
Source code in the rust programming language
/// calculate pi with algebraic/geometric mean
pub fn pi(n: usize) -> f64 {
let mut a : f64 = 1.0;
let two : f64= 2.0;
let mut g = 1.0 / two.sqrt();
let mut s = 0.0;
let mut k = 1;
while k<=n {
let a1 = (a+g)/two;
let g1 = (a*g).sqrt();
a = a1;
g = g1;
s += (a.powi(2)-g.powi(2)) * two.powi((k+1) as i32);
k += 1;
}
4.0 * a.powi(2) / (1.0-s)
}
fn main() {
println!("pi(7): {}", pi(7));
}
You may also check:How to resolve the algorithm Random numbers step by step in the PicoLisp programming language
You may also check:How to resolve the algorithm Terminal control/Ringing the terminal bell step by step in the Brainf*** programming language
You may also check:How to resolve the algorithm Word frequency step by step in the J programming language
You may also check:How to resolve the algorithm Factorial step by step in the C programming language
You may also check:How to resolve the algorithm Sorting algorithms/Merge sort step by step in the V programming language