Um milhão de digitos de PI em 8 Linhas

Se você gosta de javascript o cálculo de Pi é uma excelente experiência para ser feita que leva ao conhecimento do uso de BigInt .

Pi

Pi é um número transcendental essencial para diversos cálculos na área de engenharia. Apesar de ter incontáveis(!?) digitos não se precisa de muitos digitos para os cálculos. A Nasa utiliza 15 casas decimais para levar as sondas para Marte e se quisessemos calcular o diâmetro do tamanhao do universo (46 billhões e anos luz) com uma precisão de nanometros precisariamos de 40 casas decimais. Entretanto é um excelente ferramenta para demonstrar a capacidade de um computador, tão boa que quando Spock precisou “parar” o computador da Enterprise mandou ele calcular o último digito de Pi, o que fez o computador travar. Por isso fiquei atraido pela experiência que foi feita em usar javascript para calcular milhares de digitos de Pi.

Gerando Pi

Que tal gerar o valor de PI coma algumas milhares de casas usando javascript.

O Algoritmo:

1
2
3
4
5
6
7
8
9
let i = 1n;
let x = 3n * (10n ** 1020n);
let pi = x;
while (x > 0) {
x = x * i / ((i + 1n) * 4n);
pi += x / (i + 2n);
i += 2n;
}
console.log(pi / (10n ** 20n));

A grande sacada é o uso de BigInt. Em javascrip um BigInt é definido quando adicionamos o sufixo n, assim 1n é um BigInt.

O Algoritmo acima permite calcular os primeiros 1000 números de PI.

O algoritmo é baseado na seguinte série:

Série

Você pode contestar a velocidade do algoritmo , mas não pode contestar que ele é pequeno e permite avaliar por exemplo o desempenho do javascript de alguns navegadores ou do nodejs (nota : alguns navegadores não tem BigInt).

Caso queira saber mais veja os links abaixo.

Links

Hacker News
A Million Digits of Pi in 9 Lines of Javascript
BigInt