title: Why is 1+machine epsilon + machine epsilon/2 not equal to 1+machine epsilon/2+machine epsilon?
body: <p>Python:</p>
  <pre class="lang-py prettyprint-override"><code>machine_epsilon = np.finfo(float).eps
  first_variant = 1 + machine_epsilon + machine_epsilon/2
  second_variant = 1 + machine_epsilon/2 + machine_epsilon
  print ('%.20f' % first_variant)
  print ('%.20f' % second_variant)
  </code></pre>
  <p>C:</p>
  <pre class="lang-c prettyprint-override"><code>double eps2 = DBL_EPSILON;
  printf(&quot;1 + eps / 2 +eps %.20f \n&quot;, 1. + eps2 / 2. + eps2);
  printf(&quot;1 + eps +eps/2 %.20f \n&quot;, 1.+ eps2 + eps2 / 2.);
  </code></pre>
  <p>It resulted in <code>1.00000000000000044409</code> for the <code>first_variant</code> and <code>1.00000000000000022204</code> for <code>second_variant</code>, i.e. fractional part is 2 more.</p>
  <p>Who can explain this?</p>