title: wrong result on adition of numbers larger than epsilon using numpy.float128
body: <p>Considering that epsilon is the smallest number that you <strong>can</strong> add to one.</p>
  <p>I'm getting 1 instead of 1+epsilon when I perform the addition and print the result.</p>
  <p>I've implemented a <code>getEpsilon</code> function. I added a <code>print</code> statement for debugging.</p>
  <p>The function is implemented as follows:</p>
  <pre><code>def getEpsilon():
      a = np.float128(1)
      b = np.float128(1)
      c = np.float128(2)
      while a + b != a:
          b = b / c
          d = a+b
          print (F&quot;b={b:3.50f}, d={d:3.50f}&quot;)
      return b * c
  </code></pre>
  <p>After some iterations of the while loop the value of <code>d</code> is just 1, but <code>a + b != a</code> still evaluates as True.</p>
  <p>This is the output:</p>
  <pre><code>b=0.5000000000000000000000000, d=1.5000000000000000000000000
  b=0.2500000000000000000000000, d=1.2500000000000000000000000
  ...
  b=0.0000000000000004440892099, d=1.0000000000000004440892099
  b=0.0000000000000002220446049, d=1.0000000000000002220446049
  b=0.0000000000000001110223025, d=1.0000000000000000000000000
  b=0.0000000000000000555111512, d=1.0000000000000000000000000
  ...
  b=0.0000000000000000001084202, d=1.0000000000000000000000000
  b=0.0000000000000000000542101, d=1.0000000000000000000000000
  </code></pre>
  <p>Why does <code>a + b != a</code> have a different behavior than <code>d = a+b</code></p>
  <p>It looks like some operation is done with 64 bits instead.</p>
  <p>If I repeat it with the <code>float64</code> equivalent type the result is (last 2 lines):</p>
  <pre><code>b=0.0000000000000002220446049, d=1.0000000000000002220446049
  b=0.0000000000000001110223025, d=1.0000000000000000000000000
  </code></pre>