title: There are 2 kinds of NaN: signaling_NaN, quiet_NaN, and... NAN itself?
body: <p>I always thought there were 2 kinds of NaN's: quiet and signaling.</p>
  
  <p>But then I realized the <code>NAN</code> macro evaluates to <em>neither</em>.</p>
  
  <p>In Visual C++, <code>std::numeric_limits&lt;float&gt;::quiet_NaN()</code> is displayed as <code>1.#QNAN000</code>.<br>
  In Visual C++, <code>std::numeric_limits&lt;float&gt;::signaling_NaN()</code> is displayed as <code>1.#QNAN000</code>.<br>
  Yet also in Visual C++, <code>NAN</code> is displayed as <code>-1.#IND0000</code>... which is neither of the above.</p>
  
  <ol>
  <li><p>What kind of NaN, then, is the <code>NAN</code> constant? Is it signaling or nonsignaling?</p></li>
  <li><p>When should I use <code>NAN</code> instead of the others, when should I avoid it, and why?</p></li>
  </ol>