Results for Nan
On this page:
 
Dictionary:

Nan

  (nän) pronunciation

A river of western Thailand flowing about 563 km (350 mi) generally southward to join the Ping River and form the Chao Phraya.

 

 
 
WordNet: Nan
Note: click on a word meaning below to see its connections and related words.

The noun has one meaning:

Meaning #1: a river of western Thailand flowing southward to join the Ping River to form the Chao Phraya
  Synonym: Nan River


 

In computing, NaN (Not a Number) is a value or symbol that is usually produced as the result of an operation on invalid input operands, especially in floating-point calculations. For example, most floating-point units are unable to explicitly calculate the square root of negative numbers, and will instead indicate that the operation was invalid and return a NaN result.

NaNs in floating point

In floating-point calculations, NaN is not the same as infinity, although both are typically handled as special cases in floating-point representations of real numbers as well as in floating-point operations. An invalid operation is also not the same as an arithmetic overflow (which might return an infinity) or an arithmetic underflow (which would return the smallest normal number, a denormal number, or zero).

IEEE 754 NaNs are represented with the exponential field filled with ones and some non-zero number in the significand. A bit-wise example of a IEEE floating-point standard single precision NaN: x11111111axxxxxxxxxxxxxxxxxxxxxx. x = undefined. If a = 1, it is a quiet NaN, otherwise it is a signalling NaN.

A NaN does not compare equal to any floating-point number or NaN, even if the latter has an identical representation. One can therefore test whether a variable has a NaN value by comparing it to itself (i.e. if x != x then x is NaN).

In the IEEE floating-point standard, arithmetic operations involving NaN always produce NaN, allowing the value to propagate through a calculation. In the current (proposed) IEEE 754r revision of that standard, there are several exceptions to this rule, including the maxnum and minnum functions, which return the maximum and minimum of two operands, and will favour numbers (if just one of the operands is a NaN then the other operand is returned). This behaviour is useful in the statistical processing of data with missing values, or sparse data.

A similar concept has been implemented in the NaN toolbox for GNU Octave and MATLAB. Here NaN's have a different meaning and are used to represent missing values. The NaN toolbox contains statistical functions that ignore any NaNs in the data rather than propagating the NaNs. Most algorithms in the NaN toolbox are based on the function SUMSKIPNAN [1] which adds and counts all data value and skips all NaNs. Every statistic in the NaN toolbox is based on the data values only, again useful in statistical processing on sparse data.

How is a NaN created?

The following practices may cause NaNs:

  • All mathematical operations with a NaN as at least one operand
  • The divisions 0/0, ∞/∞, ∞/-∞, -∞/∞, and -∞/-∞
  • The multiplications 0×∞ and 0×-∞
  • The additions ∞ + (-∞), (-∞) + ∞ and equivalent subtractions.
  • Applying a function to arguments outside its domain, including taking the square root of a negative number, taking the logarithm of zero or a negative number, or taking the inverse sine or cosine of a number which is less than -1 or greater than +1.

However, it is important to realize that these NaNs are not necessarily generated by the processor. In the case of quiet NaNs the first item is always valid for each processor; the others may not necessarily be. For example, on the Intel Architecture processors, the FPU never creates a NaN except in the first case. The other items would cause exceptions, not NaNs. However, the software exception handler may examine the operands and decide to return a NaN (e.g. in the case of 0/0).

Quiet NaNs

Quiet NaNs, or qNaNs, do not raise any additional exceptions as they propagate through most operations. The exceptions are where the NaN cannot simply be passed through unchanged to the output, such as in format conversions or certain comparison operations (which do not "expect" a NaN input).

Signalling NaNs

Signalling NaNs, or sNaNs, are special forms of a NaN which when consumed by most operations should raise an invalid exception and then, if appropriate, be "quieted" into a qNaN which may then propagate. They were introduced in IEEE 754. There have been several ideas for how these might be used:

  • Filling uninitialized memory with signalling NaNs would produce an invalid exception if the data is used before it is initialized
  • Using an sNaN as a place holder for a more complicated object such as:

When encountered a trap handler could decode the sNaN and return an index to the computed result. In practice this approach is faced with many complications. The treatment of the sign bit of NaNs for some simple operations (such as absolute value) is different than for arithmetic operations. Traps are not required by the standard. There are other approaches to this sort of problem which would be more portable.

There were questions about if signalling NaNs should continue to be required in the revised standard. In the end it appears they will be left in.

NaNs in function definitions

There are differences of opinion about the proper definition for the result of a numeric function which receives a (quiet) NaN as input. One view is that the NaN should propagate to the output of the function in all cases to propagate the indication of an error. Another view is that if the function has multiple arguments and the output is uniquely determined by all the non-NaN inputs, then that value should be the result.

 If we define pow(x,y) = x ** y
 What is pow(1, NaN)?

The first view is that the output should be NaN since one of the inputs is. The second view is that since pow(1, y) = 1 for any real number y, or even if y is infinity or -infinity, then it is appropriate to return 1 for the case of pow(1, NaN). This is the approach in many math libraries.

A similar concern is for the test

 (x <= infinity)

which is true for all extended real values of x. But in IEEE 754 (NaN <= infinity) is false.

NaNs in integers

Most fixed sized integer formats do not have any way of explicitly indicating invalid data.

Perl's BigInt package uses "NaN" for the result of strings which don't represent valid integers.

 >perl -mMath::BigInt -e "print Math::BigInt->new('foo')" 
 NaN 

Displaying NaN

Note that the software libraries of different operating systems and programming languages will have different string representations of NaN.

 nan
 NaN
 NaN%
 NAN
 NaNQ
 NaNS
 qNaN
 sNaN
 1.#SNAN
 1.#QNAN

Since, in practice, encoded NaNs have both a sign and optional 'diagnostic information' (sometimes called a payload), these will often be found in string representations of NaNs, too, for example:

 -NaN
  NaN12345
 -sNaN12300

(other variants exist)

NaN encodings

The encoding to distinguish a signaling NaN from a quiet NaN was not specified in IEEE 754, which has led to at least two variant encodings. The current IEEE 754r proposal recommends (for binary encodings, in section 6.2.1) that the first fraction bit of the significand be set to one for a qNaN and be zero for an sNaN. This ensures that when an sNaN is converted to a qNaN (by inverting that bit) the result is guaranteed to still be a NaN (rather than perhaps an infinity, should all remaining bits of the significand be zero).

On processors from Intel and AMD the first fraction bit of a binary significand is set to one for a qNaN and is zero for an sNaN. Other vendors use different schemes.

For the proposed IEEE 754r decimal encodings, Infinities and NaNs are distinguished at a 'higher level', and so there is no confusion between NaNs and Infinities. Therefore, in this case, a 1 is used (in the equivalent position) to indicate sNaN, because turning this to 0 still indicates a (quiet) NaN. Hence, an initialization of all-ones sets any storage for these encodings to signaling-NaN, which is an appropriate setting for 'uninitialized' numeric data.

References

    External links


     
    Translations: Translations for: Nan

    Dansk (Danish)
    1.
    n. - bedstemor

    2.
    n. - en slags indisk brød

    Français (French)
    1.
    n. - mémé

    2.
    n. - pain indien au levain (plat et rond)

    Deutsch (German)
    1.
    n. - (ugs.) Oma

    2.
    n. - Fladenbrot

    Ελληνική (Greek)
    n. - (Βρετ., καθομ.) γιαγιάκα

    Italiano (Italian)
    pane indiano

    Português (Portuguese)
    n. - palavra usada antigamente em comunicações, para representar a letra N, nome de mulher

    Русский (Russian)
    бабуля, лепешка

    Español (Spanish)
    1.
    n. - abuelita

    2.
    n. - tipo de pan indio

    Svenska (Swedish)
    n. - farmor, mormor, indiskt bröd

    中文(简体) (Chinese (Simplified))
    祖母, 外祖母, 印度面包

    中文(繁體) (Chinese (Traditional))
    n. - 祖母, 外祖母, 印度麵包

    한국어 (Korean)
    1.
    n. - 할머니

    2.
    n. - 인도 빵의 한 종류

    日本語 (Japanese)
    n. - おばあちゃん, 乳母

    עברית (Hebrew)
    n. - ‮סוג של לחם (הודי)‬
    n. - ‮סוג של לחם (הודי)‬


     
    Shopping: Nan
    Nan Bao
     
     

    Join the WikiAnswers Q&A community. Post a question or answer questions about "Nan" at WikiAnswers.

     

    Copyrights:

    Dictionary. The American Heritage® Dictionary of the English Language, Fourth Edition Copyright © 2007, 2000 by Houghton Mifflin Company. Updated in 2007. Published by Houghton Mifflin Company. All rights reserved.  Read more
    WordNet. WordNet 1.7.1 Copyright © 2001 by Princeton University. All rights reserved.  Read more
    Wikipedia. This article is licensed under the GNU Free Documentation License. It uses material from the Wikipedia article "NaN" Read more
    Translations. Copyright © 2007, WizCom Technologies Ltd. All rights reserved.  Read more

    Search for answers directly from your browser with the FREE Answers.com Toolbar!  
    Click here to download now. 

    Get Answers your way! Check out all our free tools and products.

    On this page:   E-mail   print Print  Link  

     

    Keep Reading

    Mentioned In: