Search code examples
calculatorieee-754ti-basic

TI Basic Numeric Standard


Are numeric variables following a documented standard on TI calculators ?

I've been really surprised noticing on my TI 83 Premium CE that this test actually returns true (i.e. 1) :

0.1 -> X

0.1 -> Y

0.01 -> Z

X*Y=Z

I was expecting this to fail, assuming my calculator would use something like IEEE 754 standard to represent floating points numbers.

On the other hand, calculating 2^50+3-2^50 returns 0, showing that large integers seems use such a standard : we see here the big number has a limited mantissa.


Solution

  • TI-BASIC's = is a tolerant comparison

    Try 1+10^-12=1 on your calculator. Those numbers aren't represented equally (1+10^-12-1 gives 1E-12), but you'll notice the comparison returns true: that's because = has a certain amount of tolerance. AFAICT from testing on my calculator, if the numbers are equal when rounded to ten significant digits, = will return true.

    Secondarily,

    TI-BASIC uses a proprietary BCD float format

    TI floats are a BCD format that is nine bytes long, with one byte for sign and auxilliary information and 14 digits (7 bytes) of precision. The ninth byte is used for extra precision so numbers can be rounded properly.

    See a source linked to by @doynax here for more information.