title: Changes to Math.Exp or double implementation in .net 4.5.2
body: <p>If I run the statement</p>
  
  <pre><code>Math.Exp(113.62826122038274).ToString("R")
  </code></pre>
  
  <p>on a machine with .net 4.5.1 installed, then I get the answer</p>
  
  <pre><code>2.2290860617259248E+49
  </code></pre>
  
  <p>However, if I run the same command on a machine with .net framework 4.5.2 installed, then I get the answer</p>
  
  <pre><code>2.2290860617259246E+49
  </code></pre>
  
  <p>(i.e. the final digit changes)</p>
  
  <p>I realise that this is broadly insignificant in pure numeric terms, but does anyone know of any changes that have been made in .net 4.5.2 that would explain the change?</p>
  
  <p>(I don't prefer one result to the other, I am just interested to understand why it has changed)</p>
  
  <p>If I output </p>
  
  <pre><code>The input in roundtrip format
  The input converted to a long via BitConverter.DoubleToInt64Bits
  Math.Exp in roundtrip format
  Math.Exp converted to a long via BitConverter.DoubleToInt64Bits
  </code></pre>
  
  <p>then on 4.5.1 I get</p>
  
  <pre><code>113.62826122038274
  4637696294982039780
  2.2290860617259248E+49
  5345351685623826106
  </code></pre>
  
  <p>and on 4.5.2 I get:</p>
  
  <pre><code>113.62826122038274
  4637696294982039780
  2.2290860617259246E+49
  5345351685623826105
  </code></pre>
  
  <p>So for the exact same input, I get a different output (as can be seen from the bits so no roundtrip formatting is involved)</p>
  
  <p>More details:</p>
  
  <p>Compiled once using VS2015</p>
  
  <p>Both machines that I am running the binaries on are 64bit</p>
  
  <p>One has .net 4.5.1 installed, the other 4.5.2</p>
  
  <p>Just for clarity: the string conversion is irrelevant... I get the change in results regardless of whether string conversion is involved. I mentioned that purely to demonstrate the change. </p>