# Evaluating expression (numerical analysis)

1. Nov 4, 2013

### blob84

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. Nov 4, 2013

### jbriggs444

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.

http://en.wikipedia.org/wiki/Double-precision_floating-point_format

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.

3. Nov 4, 2013

### voko

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.