ESP8266 – Quando un double è un double…..

Una ulteriore comodità messa a disposizione da queste piccole schede ESP8266 rispetto agli Arduino è che sono più flessibili e “precise” nel calcolo in virgola mobile. Mi spiego: in tutte le schede della famiglia Arduino (tranne Arduino 2) le variabili di tipo float o double sono comunque memorizzate in 4 bytes. Il che significa che hanno comunque la precisione tipica di un float (5 o 6 decimali, non di più). Se abbiamo bisogno di far girare codice che usa intensivamente variabili a doppia precisione questo può essere un problema. E’ pur vero che esiste per Arduino una libreria a precisione arbitraria chiamata BigNumber (https://github.com/nickgammon/BigNumber) ma se si ha necessità di far girare un bel po’ di codice scritto in C bisogna apportare significative modifiche al codice stesso, che perde di ogni portabilità, senza contare il degrado di prestazioni su un microcontrollore che gira a 16MHz.

L’alternativa poteva essere dotarsi di un Arduino 2 che ha le sue variabili double a 8 byte (quindi con 15-16 decimali significativi nel migliore dei casi) oppure, meglio ancora, usare un ESP8266 che ha le double a 8 byte e che “gira” a 80MHz, il che non guasta.

Se qualcuno si stesse domandando cosa ci facciamo con delle variabili double “vere” basti pensare a calcoli di fisica applicata, inseguitori solari, calcoli di sorgere e tramonto astri, e altre cose che in un progetto di controllo elettronico possono benissimo capitare. E che l’ESP8266 sembra possa gestire piuttosto bene sia come velocità di esecuzione che in termini di memoria.

 

Lascia un commento