Page 1 of 1

13-13=-2.643e-9 ?

Posted: Thu 16 Nov, 2006 12:59 am
by cartj
Wile checking quadratic equations in math today my class came across a glitch on the ti 83+ series calculators. If you follow these steps properly it will work on any 83/84 plus calculator.
enter 1.240370349 and square it,
multiply the answer by 2,
add 8(1.240370349) to the answer,
subtract 13 from the answer,
this will cause 13 - 13 to equal -2.643e-9. Can anyone explain this or am i just stupid?

Posted: Thu 16 Nov, 2006 1:14 am
by Jim e
Try this:
enter 1.240370349 and square it,
subtract 1.538518603
Ans != 0

There is 2 extra digits of accuracy that are not seen by the user. These some times create non-zero answer that would appear to be zero.

1.0000000001 = 1

Posted: Wed 29 Nov, 2006 10:08 am
by Kalimero
Jim e is correct except for a couple details. There are 4 extra digits, not 2 (it answers -2.643e-9, not -2.6e-9). The calculator uses 14 digits to represent floating point numbers, but only shows 10. The first 13 is actually 12.999999997357 rounded to 10 digits.

For the same reason 1.0000000001 does not equal 1. The calculator does remember 1.0000000001 but prints it out rounded to 10 digits. 1.0000000001-1=1e-10. It's only when you go beyond 14 digits that information is lost: 1.00000000000001=1.

Posted: Wed 29 Nov, 2006 11:00 pm
by cartj
Thanks guys, I thought it might have been something like that (although it does seem like it would be simpler if they only used ten digits of accuracy).

Posted: Thu 30 Nov, 2006 5:19 am
by threefingeredguy
I think it's 14 instead of 10 so that you can store name and identifier bytes into the op# "registers" for finding symbols in the VAT.

Posted: Thu 30 Nov, 2006 3:32 pm
by King Harold
Most BCD operations won't get less complicated by shortening the numbers down to 10 digits, they would just be shorter. (and mlt and div would require less temporary RAM)
So what's the use of using less digits? You'd just lose accuracy. (Ok you wouldn't need the strange rounding and the lack of it sometimes.)

An OP 'register' holds 11 bytes, but that does not mean all are used. Most of the time just 9 bytes are used (variable names). Floating points however consist of 11 bytes, 1 sign+complex/real (bit 7 sign, low nibble = $C if complex), 1 exponent, 7 bytes for the number if you don't include the 2 guard bits for accuracy (so 14 numbers + 4 extra).