Code Monkey home page Code Monkey logo

calcpi.jl's Introduction

CalcPi.jl

This is a package that calculates the circumference ratio.

Installation

Install with Pkg, just like any other registered Julia package:

pkg> add https://github.com/tubone24/CalcPi.jl  # Press ']' to enter te Pkg REPL mode.

Usage

Usually, Use Gauss-Legendre Algorithm, use the function below.

julia> using CalcPi

julia> CalcPi.gauss_legendre(BigInt(10000))

3.14159265358979311120035621508437779160333415473350005136581079848894037301245

Another choice, Use Leibniz formula for π, use the function below.

julia> using CalcPi

julia> CalcPi.leibniz(BigInt(10000))

3.141692643590543213460768320877940222544825752138710733999805489190209879980251

Test

pkg> test 

Explanation of implementation

The Gauss–Legendre algorithm

The Gauss–Legendre algorithm is an algorithm to compute the digits of π.

It is notable for being rapidly convergent, with only 25 iterations producing 45 million correct digits of π.

However, the drawback is that it is computer memory-intensive and therefore sometimes Machin-like formulas are used instead.

The method is based on the individual work of Carl Friedrich Gauss (1777–1855) and Adrien-Marie Legendre (1752–1833) combined with modern algorithms for multiplication and square roots.

It repeatedly replaces two numbers by their arithmetic and geometric mean, in order to approximate their arithmetic-geometric mean.

The version presented below is also known as the Gauss–Euler, Brent–Salamin (or Salamin–Brent) algorithm, it was independently discovered in 1975 by Richard Brent and Eugene Salamin.

It was used to compute the first 206,158,430,000 decimal digits of π on September 18 to 20, 1999, and the results were checked with Borwein's algorithm.

(Quote: Wikipedia)

Algorithm

Set the initial value

a_0 = 1

b_0 = \frac{1}{\sqrt{2}}

t_0 = \frac{1}{4}

p_0 = 1

Iterative

Repeat the following calculations until a and b have the desired precision (number of digits). When calculating to the nth decimal place, it may be repeated log2(n) times.

a_{n+1} = \frac{a_n + b_n}{2}

b_{n+1} = \sqrt{a_n b_n}

t_{n+1} = t_n - p_n(a_n - a_{n+1})^2

p_{n+1} = 2p_n

π calculation

Circumference π can be approximated using a, b, t as follows.

\pi \approx \frac{(a + b)^2}{4t}

Leibniz formula for π

In mathematics, the Leibniz formula for π, named after Gottfried Leibniz, that state:

1 - \frac{1}{3} + \frac{1}{5} - \frac{1}{7} + \frac{1}{9} - \cdots = \frac{\pi}{4}

This means that the cross term series where the first term is 1 and each term is an odd reciprocal converges to π / 4 (= 0.785398…).

Using the summation symbol:

\sum_{n=0}^ \infty \frac{(-1)^n}{2n + 1} = \frac{\pi}{4}

Quote: Wikipedia

calcpi.jl's People

Contributors

tubone24 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.