1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Evaluating expression (numerical analysis)

  1. Nov 4, 2013 #1
    Hello, using octave when I evaluate this expression (1+1/x)*x-x, with x = 10^(15) i get as result 1.125, I didn't undesrtood why,
    I know that octave show 15 digits in format long so when i evaluate (1+1/x)*x i get 1e15, the last digit is not visible and it is 1, so when i do substraction i get 1.12500000000000.
  2. jcsd
  3. Nov 4, 2013 #2


    User Avatar
    Science Advisor

    It is not my area of expertise but...

    You are subtracting two nearly equal quantities from each other. This is a classical way to lose precision.

    From what I can discover with a quick trip to Google, Octave works with double precision floating point representation. Likely this would be IEEE floating point. In this format, floating point numbers are expressed in binary with a 53 bit mantissa, an 11 bit exponent and a 1 bit sign for a total of 65 bits. This fits into an eight byte field because the leading bit in the mantissa is always 1 and need not be stored.


    10-50 is approximately equal to 1.125 * 2-50 add 1 and you get, in binary

    1.00000000000000000000000000000000000000000000000001001 [54 bits]

    If you hypothesize IEEE floating point with one guard bit, that would fit with a result of 1.125.
  4. Nov 4, 2013 #3
    There are actually two classical flaws. One is in (1 + 1/x), which sums two values of vastly different magnitudes. Second is in the subtraction.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook