11 ottobre, 2019
pi con tante cifre
Uno dei miei tormenti, i numeri grossi. Forse ha radici storiche: con il Fortran il limite era 32767, 2^15-1, piccolo; per dire in un giorno ci sono 86400 secondi.
Non è una cosa solo mia, ecco Andrew Jennings e il suo blog con il post A Million Digits of Pi in 9 Lines of Javascript.
Ottimo lavoro Andrew (non ho trovato una bio, cercherò ancora, il link è arrivato via Mozilla, una lista (credo)), c'è la teoria, links e il codice JavaScript.
A dirla tutta il codice con Node.js (forse dovrei aggiornarlo?) non funziona, non accetta la notazione n per i bigints ma tanto c'è il link alla versione html che è OK!
in esecuzione...
e infine...
Chissà se con Python ... Il codice è semplice, ecco la traduzione
i = 1
x = 3 * 10**1000
pi = x
while (x > 0):
x = x * i // ((i + 1) * 4)
pi += x // (i + 2)
#print(i, x, pi)
i += 2
print(i, x)
#print(int(pi / 10**1000))
print(pi % 10**1000)
Funziona, velocissimo; potrei aumentare la precisione ma mi manca l'immaginazione: che numero viene dopo mille?
Per controllo ho confrontato le prime 80 cifre calcolate da Andrew, dalla mia versione Python e da bc:
(le ultime cifre --3 o 4-- possono non essere esatte per troncamento).
Il confronto l'ho svolto con diff, ma si può usare meld con l'usuale ambiente grafico cui siamo ormai assuefatti. Lasciato come esercizio.
Certo che rispetto a una volta; anche quando gli interi vennero promossi a 4 bytes, 2^31-1, 2147483647, 2.147e+09: robetta (ora).
🔴
Iscriviti a:
Commenti sul post (Atom)
Nessun commento:
Posta un commento