int64_t conversion to 'long double' issue
<p>The following code produces the shown output and I'm confused ... I'm using Intel compiler version 2013 beta update 2 <code>/opt/intel/composer_xe_2013.0.030/bin/intel64/icpc</code>:</p>

<pre><code>// all good
int64_t fops_count1 = 719508467815;
long double fops_count2 = boost::static_cast&lt;long double&gt;(fops_count1);
printf("%" PRIu64 "\n", fops_count1); // OK outputs 719508467815
printf("%Le\n", fops_count2);         // OK outputs 7.195085e+11

// bad! why this?
int64_t fops_count1 = 18446743496931269238;
long double fops_count2 = boost::static_cast&lt;long double&gt;(fops_count1);
printf("%" PRIu64 "\n", fops_count1); // OK outputs 18446743496931269238
printf("%Le\n", fops_count2);         // FAIL outputs -5.767783e+11 &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt; WHY?
</code></pre>
