title: Eigen `sum()` function gives different for same vector in two versions of program
body: <p>I am using Eigen c++ library for linear algebra operations. </p>
  
  <p>There is a variable <code>v</code> in my code that is a <code>VectorXd</code> type, and I need to calculate its sum, so I called <code>v.sum()</code>.</p>
  
  <p>However, when I updated my program to a new version, although the value of <code>v</code> remain same(read from the same input file), the <code>sum()</code> function give slightly 
  different value.</p>
  
  <p>Here is a piece of code that explains my problem:</p>
  
  <pre><code>double vsum1 = v.sum();
  double vsum2 = 0; // compare with manually calculated sum
  for(size_t i = 0; i &lt; v.size(); ++i)
  {
      vsum2 += v(i);
  }
  cout &lt;&lt; "sum1: " &lt;&lt; vsum1 &lt;&lt; endl;
  cout &lt;&lt; "sum2: " &lt;&lt; vsum2 &lt;&lt; endl;
  </code></pre>
  
  <p>for the old version, the result is</p>
  
  <pre><code>sum1: 94.8117866666666487
  sum2: 94.8117866666666202
  </code></pre>
  
  <p>for the new version , the result is</p>
  
  <pre><code>sum1: 94.8117866666666345
  sum2: 94.8117866666666202
  </code></pre>
  
  <p>The manually calculated sum <code>vsum2</code> remains unchanged, so I think the origin vector <code>v</code> didn't change, then why would <code>sum()</code> give different result? Is it because of 
  some SIMD optimization performed by Eigen?</p>
  
  <p>The difference is actually neligible, but that leads to a failure of regression test.</p>