mercoledì 18 luglio 2012

Zero alla zero - Conclusione

Il post di ieri, Zero alla zero  ha fatto clamore. Io ho troppo disinvoltamente endorsato avallato la convenzione di assegnare a 0^0 il valore di 1 come fanno parecchi informatici (v. Quora, cit. nel post di ieri) e (quasi?) tutti i linguaggi di programmazione.


Poi sono stato, giustamente, corretto da due post eccezionali di due blogger eccezionali:
E un altro è preannunciato da Zar / Roberto Zanasi che non so se sia coinvolto nel terremoto. Vi prego di notare l'elegantezza del titolo di GLF e che i tre blogger sono tutti nella nostra lista.

Allora la soluzione della domanda "quanto fa zero elevato a zero?" è
"Indeterminato" o, come preferisce l'amico (ing. che si occupa di 'puters) Massimo "Indefinito".

Però ho ancora qualche esempio da farvi vedere, eccoli.

La shell bash


Haskell (versione interattiva)


Il principe dei linguaggi, il C
#include
#include

int main() {
    printf("%f\n", pow(0.0, 0.0));
}


Il linguaggio dei macinanumeri, il Fortran
program zaz
print *, 0 ** 0
end


Java, molto in voga ultimamente
import static java.lang.Math.pow;
import static java.lang.System.out;

class zaz {
    public static void main(String args[]) {
        out.printf("%f\n", pow(0.0, 0.0));
    }
}


Uhmmm... tutti d'accordo. E d'accordo con Anders (che se è vero che ti fischiano le orecchie quando qualcuno parla di te a quest'ora avrà prenotato una visita specialistica dal come-si-chiama-quello-delle-orecchie).

E, persisto, se qualcuno ti dicesse che sei per nove fa quarantadue prima di dirgli errore dovresti chiedergli in che base?. Sì perché

in base 13 si ha
4213 = 4 * 101 + 2 * 100
che il base 10 diventa
4 * 131 + 2 * 130 = 52 + 2 = 5410

visto? E queste cose me le hanno raccontate e le ho raccontate tante volte. Ai miei tempi si usava base otto, gli ottali, poi, l'inflazione, si è passati a base sedici, gli esadecimali. E i francofoni usano ancora numeri base 20. OK, Herr Professor Ludwig von Drake mi sta facendo notare che sono OT.

Ma ravanando un pochino su Wikipedia (come farei se___ (sì lo so che sono ripetitivo)) ecco Exponentiation - 7.4 Treatment on computers
IEEE floating point standard

The IEEE 754-2008 floating point standard is used in the design of most floating point libraries. It recommends a number of different functions for computing a power:[20]

  •     pow treats 00 as 1. This is the oldest defined version. If the power is an exact integer the result is the same as for pown, otherwise the result is as for powr (except for some exceptional cases).
  •     pown treats 00 as 1. The power must be an exact integer. The value is defined for negative bases, e.g. pown(−3,5) is −243.
  •     powr treats 00 as NaN (Not-a-Number – undefined). The value is also NaN for cases like powr(−3,2) where the base is less than zero. The value is defined by epower'×log(base).

OK, credo che il mio contributo alla questione possa concludersi qui.


Come il precedente sull'argomento anche questo post è dedicato alle mie amiche Valeria, Francesca e Spiessli che adorano la matematica.
Te pensa te che il post di ieri è stato visitatissimo: ha addirittura superato il popolarissimo Pippi Calzelunghe (che resta uno dei miei preferiti). E lo sapete che il post di Pippi è nato per via di un incontro con il papà del piccolo D. per via dei 'puters?  

Questo post partecipa al 52º Carnevale della Matematica, presso Mr. Palomar

3 commenti:

  1. Grazie Juhan.
    Mi piacerebbe proprio tantissimo capirci qualcosa, ma rinuncio. Non per colpa tua eh, è che sono proprio matematicamente gnucca di mio, sia chiaro.

    RispondiElimina
  2. (non è terremoto, per fortuna è solo vacanza...)

    RispondiElimina