Double.longBitsToDouble and Double.doubleToRawLongBits with NaN
<p>Why is</p>

<pre><code>Double.NaN != Double.longBitsToDouble(Double.doubleToRawLongBits(Double.NaN));
</code></pre>

<p>although the <a href="http://docs.oracle.com/javase/6/docs/api/java/lang/Double.html#doubleToRawLongBits%28double%29" rel="nofollow">SE 6 documentation</a> says the following:</p>

<blockquote>
  <p>In all cases, the result is a <code>long</code> integer that, when given to the
  <code>longBitsToDouble(long)</code> method, will produce a floating-point value the same as the
  argument to <code>doubleToRawLongBits</code>.</p>
</blockquote>
