# Calculator algorithms

Does there exist a good reference on the algorithms used by calculators, especially on the trigonometric and transcendental functions?

I would still like to know how Casio generates its random numbers. I still wonder if they are any good.

• jacques-laporte.org/TheSecretOfTheAlgorithms.htm Dec 12, 2010 at 19:23
• For fun... Dec 13, 2010 at 8:58
• Trig functions, probably lookup tables [to optimize?] or Taylor series approximations. Dec 14, 2010 at 1:37

I would recommend reading Gerald Rising's Inside your Calculator (which has a supplementary website); there is a nice discussion of the methods used by some calculators that is suitable at the undergraduate level.

Otherwise, to really figure out what methods they are using, it might help to search the technical notes of the manufacturer's websites. For instance, Texas Instruments has notes like this one on their "knowledge base" that discuss "what's under the hood", though not in detail of course. (Sometimes, hobbyist sites like this one also discuss calculator algorithms.)

• As for "how Casio generates its random numbers", I'd speculate that it's using the simplest sort of algorithm: the linear congruential generator (LCG); it's pretty compact to be easily implemented in hardware. Dec 13, 2010 at 3:04
• Another thing I'd like to note on the arithmetic side: there are calculators, like those from TI and HP that internally store their numbers as binary coded decimal (BCD). That usually requires some finesse in manipulating, more than the usual representation of numbers in binary/hex. Dec 13, 2010 at 8:55
• Long ago Random numbers were latched from a CPU's dynamic refresh register and manipulated to whatever range was needed. Nov 16, 2013 at 16:41
• As an additional note, there is a nice discussion of CORDIC in Jörg Arndt's [ Matters Computational ](jjj.de/fxt/fxtpage.html#fxtbook) ; it's a nice book for learning many computational tricks. Dec 13, 2010 at 14:59

The GNU Multiple Precision Arithmetic Library (GMP) has a very good documentation describing how they implemented all the arithmetic functions for their multiple precision library:

http://gmplib.org/manual/

Give it a try!

UPDATE: I know the GMP is used for big number computation, but arithmetic is arithmetic, and to make big number computations you must understand small number computations, so I am sure (or at least "almost" sure) the documentation mention what is enough to for calculator arithmetic.

• But I doubt those are what I used in calculators. Dec 13, 2010 at 3:09
• I'm confused about the upvotes to this; it's a bit offtopic if you ask me... and not all the methods for arbitrary precision are appropriate for computing at the precision of a typical calculator. I certainly wouldn't use Karatsuba for multiplying small numbers... Dec 13, 2010 at 3:10
• John, J.M., yes, I know the GMP is used for big number computation, but arithmetic is arithmetic, and to make big number computations you must understand small number computations, so I am sure (or at least "almost" sure) the documentation mention what is enough to for calculator arithmetic. Dec 13, 2010 at 7:06
• I feel that it is better to include your comment in the answer so that people understand why you mentioned the multi-precision algorithms. Dec 13, 2010 at 12:32
• OK, I updated my post. Dec 13, 2010 at 14:51

The algorithms are typically common, but the implementation changes.
Early calculators like the HP-41 stored numbers in BCD format. Modern machines are more likely to use IEE-754 formats, in single or double precision.

For modern stuff, any math library should have what you want. For older formats, look for websites like the HP calculator Museum.