In informatica, NaN è un simbolo di avvertimento indicante che il risultato di un'operazione (numerica) è stata ottenuta eseguendola su operandi non validi (specialmente in calcoli in virgola mobile). Il suo nome è l'acronimo di Not a Number (trad. "non è un numero"). Esempi sono la divisione per zero o la radice quadrata di un numero negativo, a cui le FPU assegnano come risultato "NaN".

NaN e virgola mobile

Nel calcolo in virgola mobile "NaN" e "infinito" non sono la stessa cosa, anche se in questo contesto vengono gestiti entrambi come casi particolari nella rappresentazione dei numeri reali e nelle operazioni. Un'operazione non valida si differenzia inoltre sia dall'overflow che dall'underflow aritmetico (i quali danno come risultato rispettivamente un infinito e un numero denormalizzato o uno zero).

Nello standard per il calcolo in virgola mobile IEEE 754 i NaN sono rappresentati con il campo dell'esponente riempito di "1" e un numero diverso da zero nel campo della mantissa (il campo zero corrisponde ad infinito). Questo è un esempio (in real*4):

x11111111axxxxxxxxxxxxxxxxxxxxxx

Per il primo bit (che rappresenta il segno) non è previsto il valore. Se a=1 il numero è un quiet NaN ("NaN silenzioso"), mentre se a=0 si ha un signalling NaN ("NaN segnalatore"). I primi possono essere il risultato di operazioni aritmetiche, i secondi no e devono essere generati assegnando la rappresentazione interna.

Nei test ogni NaN è considerato diverso da qualunque numero, compreso se stesso: questo permette di verificare se il contenuto di una variabile è un NaN confrontandola con se stessa (x ≠ x implica che x è un NaN).

Nello standard corrente, ogni operazione eseguita su un NaN dà come risultato un altro NaN, inficiando tutta una serie di calcoli in caso di un errore a monte che dia questo risultato. Nella revisione (attualmente proposta) IEEE 754r, ci sono due eccezioni: le funzioni maxnum e minimum (che restituiscono il numero rispettivamente più grande e più piccolo tra due operandi) danno preferenza ai numeri sugli NaN (ciò risulta utile nel caso di calcoli statistici su dati sparsi).

Note

Voci correlate

  • IEEE 754
  • IEEE 754r

Collegamenti esterni

  • (EN) Eric W. Weisstein, NaN, su MathWorld, Wolfram Research.
  • (EN) Denis Howe, Not-a-Number, in Free On-line Dictionary of Computing. Disponibile con licenza GFDL
  • (EN) Infinity and NaN dal manuale della GNU C Library
  • (EN) Not-a-Number dal manuale di MATLAB

Nan

Nan Definition Card, Nan Card for Any Occasion, Loving Nan Birthday

Happy Birthday Nan Card Boomf

Regular Nan Star of Asia

nan, 16 May 2009