Salve a tutti ,
il mio scopo è quello di creare un programma in java che calcoli "tot" cifre decimali del numero irrazionale pi greco , con "tot" numero acquisito in input.
Per la determinazione delle cifre decimali del pi greco userò l'algoritmo di Chudnovsky.
Nell'effettuare calcoli di questo tipo con un numero enorme di cifre , l'intento sarebbe magari di superare il record di 5000 miliardi di cifre decimali http://it.wikipedia.org/wiki/Pi_greco#cite_note-18 , sorgono una marea di problemi a cui ancora non so minimamente come far fronte.
Innanzitutto tutti i tipi di dato primitivi in java non sono sufficienti a rappresentare un numero a 5000 miliardi di cifre , anche i double sarebbero una nicchia a confronto...così ho pensato di utilizzare numeri in formato stringa , in un certo senso così facendo posso avere a che fare con numeri la cui dimensione è limitata dalla quantità di memoria fisica (sarebbe meglio dire di heap size che la JVM concede all'applicazione ) installata (RAM)...ma pur così facendo , considerando che le stringhe sono considerabili come concatenazioni di caratteri , che in java occupano 16 bit (2byte) ciascuno , per ottenere e "immagazzinare" , anche temporaneamente , numeri a 5000 miliardi di cifre servirebbe una memoria di 5000 miliardi * 2 byte --> 10000 miliardi di byte --> all'incirca 9 TB di memoria , una quantità immensa rispetto alle memoria che si trovano in commercio o di cui si dispone normalmente...
Dunque mi sto scervellando per trovare un qualche procedimento per raggirare , in primis , questo problema sopra descritto , ma per ora sono proprio in alto mare...
Girando per il web sono venuto a conoscenza , e ho potuto anche farne un primo utilizzo , di alcuni programmi (penso scritti in C o qualcosa del genere ) tipo y-cruncher o TachusPI (implementato dal precedente detentore del record di cifre decimali del pi greco , con 2700 miliardi di cifre , qui scaricabile http://bellard.org/pi/pi2700e9/tpi.html) , ma non disponendo dei codici sorgenti di essi non so come operano per fare calcoli con numeri di così estremamente grandi cifre...in particolare il secondo che sembra non avere bisogno di ingenti quantità di RAM a disposizione (basti pensare che Fabrice Bellard ha effettuato questo calcolo utilizzando un computer domestico CPU Intel Core i7 a 2,97 GHz, 6 GB di RAM e 7,5 TB di memoria fissa) mentre y-cruncher sembra aver bisogno di estreme quantità di RAM...
Dunque avete qualche idea su come possa essere implementato un programma simile?Ovviamente non pretendo che mi forniate il codice sorgente ma , se qualcuno ha qualche brillante idea , di buttar giù i concetti in modo da aiutarmi in questo intento...
Ps. forse l'argomento può essere un po' "off topic" rispetto alla sezione , ma in questo caso non saprei in quale altra sezione postare la domanda...