Prologo
La lunghezza delle parole digitali usate per esprimere contenuti di varia natura (testo, numeri e altro) è quasi sempre scelta in base alla comodità di avere un numero di bit pari a una potenza di due e comunque un multiplo di 8, ovvero un numero intero di Bytes. Nel campo dei numeri in virgola mobile (FPF), questo ha portato all'affermazione di formati a 16, 32, 64 e 128 bit, denominati anche "mezza precisione", "singola precisione", "doppia precisione" e "precisione quadrupla". Nei numerosi articoli che ho pubblicato in questo Blog e che sono linkati nella sitografia, ho spesso evidenziato come tale convenzione sia estremamente vincolante e porti a degli standard che di comodo e razionale hanno ben poco. A titolo di esempio, il formato FPF di gran lunga più utilizzato, quello a 64 bit, è sovrabbondante per la stragrande maggioranza degli utilizzi, sia in termini di precisione numerica che di esponente massimo; peraltro, la ripartizione dei bit appare maldestra, dato che l'uso di 53 bit per la mantissa (o significando) implica una precisione di circa 15,95 cifre decimali, sfiorando la quota di 16 cifre significative senza tuttavia poterle garantire! Tutto questo si traduce in uno "spreco di bit" che ha pesanti ripercussioni sia sulla occupazione della memoria, sia soprattutto sulla complessità strutturale delle unità Logico-Aritmetiche, con impatto negativo in termini di consumi energetici e difficoltà di dissipazione del calore prodotto.
La proposta
Da quanto detto emerge, almeno nel sottoscritto, la necessità di razionalizzare gli standard FPF, introducendo formati alternativi che infrangono la suddetta "regola delle potenze di due" imposta dagli informatici e sfruttino in maniera realmente efficace queste nuove lunghezze. Da questa esigenza sono scaturite, in passato, le mie proposte di vari formati a 24, 48, 52, 80 bit e altre lunghezze, ognuna delle quali presentava evidenti vantaggi, soprattutto se abbinate all'adozione di potenti varianti "non convenzionali", ovvero non aderenti allo standard ingegneristico IEE754. Ne è un esempio l' "esponente esteso" da me ideato e presentato in numerose versioni, sempre più raffinate.
Sulla scia delle precedenti proposte, in questa sede ho provato a vedere cosa accadrebbe sganciandocisi completamente dai condizionamenti sulla lunghezza delle parole usate, rispettando comunque lo standard Floating classico. Per farlo, ho imposto i seguenti criteri:
- La precisione numerica deve avere un margine (parte frazionaria) ampio ma non eccessivo, tra 0,6 e 0,75 cifre decimali (pari a 2÷2.5 bit); fanno eccezione solo i formati a precisione più limitata che, per loro natura, sono comunque approssimativi e adatti ad applicazioni non troppo rigorose.
- La spaziatura tra i vari formati deve essere abbastanza uniforme in termini di lunghezza, vicina ad una progressione geometrica con incrementi dell'ordine del 40% tra un formato e quello successivo. Questo permette una "copertura" abbastanza uniforme e tale da soddisfare qualsiasi esigenza.
- La lunghezza delle parole deve spaziare al massimo su un ordine di grandezza, per limitare il numero di opzioni ed evitare di andare su formati di lunghezze estreme che sono completamente inutili.
Ne risulta un insieme di 7 formati FPF, riportati nella tabella in apertura. Quello centrale, evidenziato in arancione, è il mio preferito perchè, pur non essendo troppo lungo, offre una precisione e un range di esponenti decisamente superiori alla doppia precisione, adatti davvero a qualsiasi esigenza di carattere scientifico. Nella stragrande maggioranza dei casi, comunque, il formato a 52 bit rimane quello preferibile dato che offre comunque una precisione "ottimale" e un range di esponente soddisfacente in qualsiasi utilizzo concreto. E' da sottolineare che la sequenza proposta è praticamente composta da tre sezioni in cui l'aumento di lunghezza della mantissa e dell'esponente sono costanti, cioè vengono usati gli stessi incrementi due volte.
In alternativa, data la limitata utilità degli ultimi due formati, li si potrebbe sostituire con un solo standard intermedio ad altissima precisione, ad esempio con 150 bit di cui 125 per la mantissa (37.63 cifre decimali) e 25 per l'esponente (±5,05 milioni). Al limite, si potrebbe sopprimere anche il formato a precisione molto alta e si rimarrebbe con un solo formato per applicazioni matematico/ricreative a 120 bit, di cui 102 per la mantissa (30,71 cifre, esponente fino a quasi 40000).
Come si vede, qui non solo si evitano le potenze di due o i multipli di 8, ma si giunge addirittura alla blasfemia di usare lunghezze dispari!
Considerazioni e conclusioni
Dopo 9 anni di continue elucubrazioni sull'argomento, con voli fantastici e vertiginosi verso le terre ignote e insidiose degli esponenti estesi, dei super-esponenti, dei numeri razionali flottanti e non denormalizzati, questo articolo costituisce l'apice ma anche un ritorno alle origini e alla semplicità. Qui non si propongono formati dirompenti nell'organizzazione o nella codifica dei numeri in virgola mobile ma semplicemente una risistemazione delle loro lunghezze complessive e della ripartizione interna dei bit, in maniera da razionalizzarli per soddisfare davvero ogni esigenza.
Quasi certamente, le proposte qui elencate non verranno mai adottate perchè ormai il sistema è consolidato; del resto, la razza umana ha sempre ripudiato soluzioni semplici e razionali. Ne sono un esempio palese la persistenza, in molti ambiti, di sistemi di unità di misura antiquati e scomodi oppure la pessima modalità con cui ci ostiniamo a dividere il tempo, rispettando una tradizione arcaica e in parte frutto di superstizioni religiose, dunque irrazionalmente intoccabili.
L'unico scopo di questo lavoro e dei precedenti è quindi solo ottenere un "divertissement" ricreativo, basato sul paradigma del "...quanto sarebbe bello se...". Ringrazio quindi tutti i lettori che, mostrando grande curiosità e ammirevole pazienza, hanno dedicato attenzione nel leggerli.