Leading the way to the Future
Welcome Guest, Login!
04 Oct 2011 04:43:37 pm by vic9317
Hi - recently I encountered a question asking if the TI-83/84/Plus/SE calculators could be modified to display more digits on screen. That got me thinking; the TI-8x calcs display, I believe, about 10 digits on screen at a time, and internally hold 14 digits for calculations. Is this 14-digit limit specifically implemented as part of the TI-OS, or is it a limitation of the Zilog Z80 itself? If the former, then I imagine that it would be possible to modify the TI-OS or create a new operating system that removes this limitation (if it has not already been done). If the latter, then I suppose the only way to hold more digits would be to use a better (higher-bit?) processor. Is that correct? Which is the real case?

Thanks all.
05 Oct 2011 12:43:37 am by Sven.Thomas0
This is just a software limitation and it is possible to write your own code to handle more digits Smile The Z80 has 8-bit and a few 16-bit operations and the Z80 calc models don't have a second CPU for floating points (I think some computers and whatnot do?)
05 Oct 2011 06:03:11 pm by vic9317
Thanks for replying, the information good to know. But now I'm curious: what is the physical limit number of digits the Z80 can handle? Furthermore, would you know of any programs/apps already in existence that do, in fact, allow the expansion of internally stored floating point digits (and possibly the number which can be displayed on screen)?

Once again, thanks.
07 Oct 2011 06:23:14 am by Sven.Thomas0
By physical limit... that depends on how deep you want to get into the programming. On a TI-83+, there is about 24000 bytes of free RAM, so you can technically make a 48000 digit number. on the average TI-84+SE, if you want to play with the extra RAM page, you can tack on another 32000 digits to bring the total to 80000 digits. However, if you get really lucky and have a special TI-84+/SE, you might have all 8 RAM pages, giving you about 300 000 digits to work with :)

But again, that is dreaming really big. I believe I saw an app on TICalc that used arbitrary precision math, but I am not sure.
07 Oct 2011 11:41:44 pm by vic9317
Hmm, that's pretty interesting, thanks.

About the arbitrary precision math, you might be talking about Cabamap. It's great for calculating large numbers, but doesn't work with decimals, unfortunately.

I came across an example of where more precision is needed today (besides your typical 1E-27 ones). When calculating log<sub>2</sub> 16, one could express it as log(16)/log(2), which returns the correct value of 4. However, performing int(log(16)/log(2)) yields 3 instead of the expected 4! This, of course, can be explained by the 14-digit limit and precision errors. Are there any known methods/ways to get around a problem like this?
08 Oct 2011 11:29:13 am by Deep Thought
If you want less precision (and fewer precision errors), you can use round(). For example, round(log(16)/log(2), 10) rounds to the tenth decimal place.
10 Oct 2011 05:12:04 pm by vic9317
Ah, that'd be nice, but the goal is to get more precision with fewer precision errors. Razz
10 Oct 2011 05:22:53 pm by Deep Thought
There will always be precision errors, unless you wrote your own floating-point calculation system with more digits per FP number.