Il déjà vu dei numeri primi

Storie di bug da Matrix al microprocessore Pentium

image
Matrix, le anomalie nel codice numerico rivelano un messaggio ©Francesco Grassi
E se il mondo in cui viviamo avesse dei bug? Sarebbero proprio questi bug a dare origine ai fenomeni che chiamiamo paranormali?

Il termine bug che propriamente significa insetto, era usato già durante la Seconda guerra mondiale per descrivere problemi elettronici con l’uso dei radar. Ancor prima, verso la fine dell’800, lo stesso termine era usato in presenza di problemi di funzionamento o connessione di apparecchiature elettriche.

In sostanza, quando si parla di bug in contesti che coinvolgono sistemi elettrici o elettronici ci si riferisce a qualche problema di cui non si conosce la causa; è nota dunque l’evidenza di un fenomeno, ma non è chiaro, almeno inizialmente, quando si manifesti e cosa lo possa originare. Ognuno di noi usando il computer si sarà imbattuto sicuramente in comportamenti anomali del sistema o di qualche applicazione, come ad esempio l’apparizione di un messaggio inaspettato, lo spegnimento improvviso dello schermo, il riavvio dell’apparecchio con conseguente perdita dei dati digitati in un documento che non avevamo ancora salvato, o ancora uno schermo completamente blu con caratteri incomprensibili e misteriosi.

Nel film di fantascienza Matrix, scritto e diretto nel 1999 dai fratelli Andy e Larry Wachowski, c’è una famosa scena in cui il personaggio principale, Neo, vede un gatto nero camminare e, qualche istante dopo, rivede lo stesso gatto fare esattamente lo stesso percorso, provando così l’esperienza di un déjà vu, come se il tempo fosse tornato indietro per un breve istante. Come è noto, nel film i protagonisti vivono due realtà, una reale e l’altra invece virtuale, Matrix appunto, frutto di una simulazione elettronica ordita dalle macchine che avevano soggiogato l’intera umanità. Nel mondo virtuale di Matrix un déjà vu è tecnicamente un bug, la manifestazione di un’anomalia del programma di simulazione della realtà virtuale che vivono i protagonisti.

E dunque, riprendendo le domande iniziali, può essere che anche noi viviamo inconsapevolmente una realtà virtuale all’interno di una simulazione computeristica affetta da bug?

image
1945, il mito diventa realtà: primo caso reale di bug trovato e fisicamente rimosso
Nel 1945 Grace Murray Hopper[1], pioniera della programmazione informatica, lavorava sull’Harvard Mark II, uno dei primi computer digitali elettromeccanici della storia, e il 9 settembre di quell’anno si evidenziò un malfunzionamento del sistema. Un’indagine identificò la causa in una falena incastrata nei contatti del relè #70 del Pannello F; la falena fu rimossa dagli operatori e il sistema tornò a funzionare. L’insetto, il bug appunto, fu affisso al report cartaceo della lista dei problemi con la scritta First actual case of bug being found (Primo caso reale di bug trovato). Il problema era stato identificato, il computer era stato fisicamente debuggato e sebbene la Hopper abbia detto sempre di non essere stata presente durante la rimozione della falena, contribuì a rendere famosa questa storia che aveva consacrato il mito del bug nel computer trasformandolo in realtà.

Nel 1994 Thomas Nicely[2], professore di matematica del Lynchburg College in Virginia, lavorando sui numeri primi gemelli, si imbatté senza volerlo in un bug ben più immateriale della falena, presente nel microprocessore Pentium prodotto da Intel Corporation dal 1993 al 1999. Un numero primo è un numero intero positivo che ha solamente due divisori, il numero 1 e se stesso; ad esempio 2, 3 e 5 sono numeri primi mentre 4 e 6 non lo sono. La successione dei numeri primi comincia con 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37 e intorno al 300 a.C. Euclide dimostrò[3] che tale successione è infinita: per quanto grande si possa scegliere un numero naturale n, esiste sempre un numero primo maggiore di n. Nell’insieme dei numeri primi, ci sono dei numeri ancora più particolari, che vengono chiamati numeri primi gemelli, ad esempio 3 e 5, 5 e 7, 11 e 13. I gemelli sono numeri primi molto vicini, perché sono separati da un solo numero pari, che è la minima distanza possibile fra due numeri primi. La domanda che Euclide stesso si pose fu: se è vero che i numeri primi sono infiniti, possiamo affermare che esistono infinite coppie di numeri primi gemelli? Intuitivamente verrebbe da pensare di sì, ma purtroppo fino ad oggi nessuno è riuscito a dimostrare la verità o la falsità di questa congettura.

Per i matematici, i numeri primi hanno sempre avuto caratteristiche particolari. Cosa succede ad esempio se tentiamo di sommare i reciproci di tutti i numeri primi che sappiamo essere infiniti? 1/2 + 1/3 + 1/5 + 1/7 + ...? Quella somma converge verso un numero? La risposta l’ha data Eulero[4] dimostrando che quella somma non converge, ma diverge verso infinito. Ma se invece di sommare tutti i numeri primi, sommiamo solo quelli gemelli, eseguendo cioè questo calcolo: (1/3 + 1/5) + (1/5 + 1/7) + (1/11 + 1/13) + ... che cosa succede? Pur non sapendo se i numeri primi gemelli sono infiniti o meno, è possibile dire se questa somma è finita o infinita? La paradossale risposta è stata trovata[5] dal matematico Viggo Brun[6] nel 1919, il quale ha dimostrato che quella somma converge verso una costante, indicata con la lettera B (costante di Brun) e che è circa uguale a 1,902160583104. Il calcolo sempre più approssimato del valore di B può essere ottenuto eseguendo la somma dei reciproci delle coppie di quanti più numeri primi gemelli possibile.

Questo era ciò che il professor Thomas Nicely cercava di fare quando comprese che il computer su cui stava lavorando, dotato di microprocessore Pentium, nel calcolare i reciproci dei due numeri primi gemelli 824.633.702.441 e 824.633.702.443, generava un clamoroso errore di arrotondamento (FDIV-Bug). Nicely descrisse il problema all’Intel fornendo una procedura per riprodurre il bug e dopo varie vicissitudini Intel fu costretta a debuggare con grandi costi i microprocessori Pentium che mostravano questo difetto nel calcolo e a sostituirli con una versione funzionante.

Tornando alle domande iniziali, non sappiamo se viviamo una realtà simulata, anche se periodicamente il tema torna alla ribalta; c’è chi propende per il sì e chi per il no, un po’ come per la congettura sui numeri primi gemelli, di cui non si sa se siano finiti o infiniti.

image
Microprocessore Pentium affetto da FDIV-Bug
Quello che però insegna questo racconto su alcuni bug famosi è che in tutti i casi l’anomalia era rappresentata da un fenomeno reale e riproducibile. Così, per esempio, Nicely non negò l’esistenza del bug del Pentium anche se non gli era chiaro quale ne fosse la causa. Chi sostiene il paranormale, invece, incappa nell’errore di dare per scontata l’esistenza dei fenomeni anomali senza fornire una procedura per riprodurli, pretendendo allo stesso tempo che altri credano alla loro esistenza basandosi solo sulla fiducia e senza alcuna evidenza. Nella nostra realtà, anche se fosse simulata, la cosa non funziona così.

Intel non avrebbe mai ritirato dal mercato i suoi microprocessori Pentium se Thomas Nicely non avesse effettivamente riprodotto e mostrato inequivocabilmente a tutto il mondo l’esistenza del bug causato dai numeri primi gemelli. A onore del vero, per Intel quell’errore di calcolo del Pentium era già noto dall’estate del 1994, qualche mese prima che Nicely denunciasse pubblicamente il problema, ma la casa produttrice del microprocessore non aveva divulgato la notizia per evitare i costi del ritiro e della sostituzione. Per Intel, le evidenze portate da Nicely furono senza ombra di dubbio un terribile déjà vu causato dai numeri primi.

Note