The Reverse Polish Algorithm for Hewlett
Packard Calculators

W. Marshall Leach, Jr.
Professor of Electrical and Computer Engineering
Georgia Institute of Technology
Atlanta, Georgia 30332-0250
Copyright 1999


The operating system for Hewlett Packard scientific calculators is called "reverse Polish notation," or simply rpn. In talking to students who have HP calculators, I have not found one who knows the rpn algorithm. This is unfortunate, because not knowing it is a major cause for making mistakes with HP calculators. This page explains the algorithm and gives examples. When the algorithm is applied correctly, one can use the calculator to rapidly evaluate long expressions without stopping to think how the terms are grouped in the expression, even with the calculator display covered.

[GIF Image of HP35
Calculator]

Aside from computer programmers, not many engineers had heard of reverse Polish notation until Hewlett Packard introduced the HP35 calculator in 1972. It was a non-programmable, four-function scientific calculator with only one memory register. It had a light emitting diode display that drew so much current from the batteries that an ac charger came with the calculator. To keep the batteries charged, most people left the calculator connected to the charger when possible. The calculator sold for $395. In 1973, the price was reduced to $295. It was discontinued in 1975.

The major difference between the HP35 and calculators made by other companies was that it used reverse Polish notation. This was the major feature that HP promoted for the calculator. The HP35 manual had an appendix devoted to explaining the rpn algorithm. As later calculator models were introduced, the emphasis on rpn gradually diminished. The manuals that come with HP calculators today barely even mention it.

Polish notation was described in the 1920s by Polish mathematician Jan Lukasiewicz as a logical system for the specification of mathematical equations without parentheses. There are two versions, prefix notation and postfix notation. In prefix notation, the operators are placed before the operand. In postfix notation, this order is reversed. The following example illustrates the two. The asterisk is used for the multiplication sign.

   Equation with parenthesis       (1 + 2) * 3
   Prefix notation                 * 3 + 1 2       or      * + 1 2 3
   Postfix notation                1 2 + 3 *       or      3 1 2 + *

Postfix notation has since become known as reverse Polish notation. In the HP implementation of rpn, the ENTER key is pressed between any two numbers that are not separated by an operation.

The Algorithm

The basic reverse Polish calculator algorithm is to key in a number. If you can perform a calculator operation do it. If not, press ENTER. Then repeat until the complete expression is evaluated. The following flow graph summarizes the algorithm.

[GIF Image of Flow
Graph]

Examples

If you own one of the HP calculators that allows you to set the display in either the symbolic mode or the numeric mode, set the mode to numeric. This is done by entering the mode/flag menu and flagging the line that says "constants to symbols" so that it says "constants to numbers." Otherwise, you will not obtain numerical answers when you use symbols such as "pi" in equations.

There are two evaluation methods given for each example. The first evaluates the expression in the order that the numbers appear. The second evaluates an equivalent expression in which the order of some terms is reversed so as to minimize the number of times the ENTER key is pressed. This minimizes the chances of overflowing the calculator stack for the models that have only four stack registers. Letters for calculator functions are upper case, * is used for the multiplication key, / is used for the divide key, e^x is used for the "e to the x" key, x^2 is used for the "x squared" key, and ROOT(x) is used for the "square root of x" key. The columns to the right show the contents of the X, Y, Z, and T registers after each operation. Note how the numbers move to the right when ENTER is pressed and to the left after an operation is performed.

Example 1:

   Algebraic Expression (4 + 2 * 5) / (1 + 3 * 2)

   Reverse Polish Expression 4 2 5 * + 1 3 2 * + /

   HP Calculator Implementation

			X	Y	Z	T
	4		4	.	.	.
	ENTER		4	4	.	.
	2		2	4	.	.
	ENTER		2	2	4	.
	5		5	2	4	.
	*		10	4	.	.
	+		14	.	.	.
	1		1	14	.	.
	ENTER		1	1	14	.
	3		3	1	14	.
	ENTER		3	3	1	14
	2		2	3	1	14
	*		6	1	14	.
	+		7	14	.	.
	/		2	.	.	.

   Reordered Algebraic Expression (2 * 5 + 4 )/(3 * 2 + 1)

   Reverse Polish Expression 2 5 * 4 + 3 2 * 1 + /

   HP Calculator Implementation

			X	Y	Z	T
	2		2	.	.	.
	ENTER		2	2	.	.
	5		5	2	.	.
	*		10	.	.	.
	4		4	10	.	.
	+		14	.	.	.
	3		3	14	.	.
	ENTER		3	3	14	.
	2		2	3	14	.
	*		6	14	.	.
	1		1	6	14	.
	+		7	14	.	.
	/		2	.	.	.

   The answer is 2 for both methods. Note that the numbers never
   reach the T register in Method 2.

Each time ENTER is pressed, the numbers move up in the stack. Each time an operation is performed, the numbers move down in the stack. Some HP calculator models have only 4 registers and it is possible to overflow the stack if ENTER is pressed too many times without operations in between. For this reason, Method 2 is preferred where products are evaluated before sums. Note that Method 2 contains 2 less ENTERs and the numbers never reach the T register. It should be obvious that the number of ENTERs can be minimized if the expression is rearranged so that multiplications and divisions are performed before additions and subtractions. The rearrangement can easily be done mentally without rewriting the expression.

Example 2:

   Algebraic Expression [5 + 8 * sin(2 * 15)] / [2 + tan(45)]

   Reverse Polish Expression 5 8 2 15 * sin * + 2 45 tan + /
 
   HP Calculator Implementation

			X	Y	Z	T
	5		5	.	.	.
	ENTER		5	5	.	.
	8		8	5	.	.
	ENTER		8	8	5	.
	2		2	8	5	.
	ENTER		2	2	8	5
	15		15	2	8	5
	*		30	8	5	.
	SIN		0.5	8	5	.
	*		4	5	.	.
	+		9	.	.	.
	2		2  	9	.	.
	ENTER		2	2	9	.
	45		45	2	9	.
	TAN		1	2	9	.
	+		3	9	.	.
	/		3	.	.	.

   Reordered Algebraic Expression [sin(2 * 15) * 8 + 5] / [tan(45) + 2]

   Reverse Polish Expression 2 15 * sin 8 * 5 + 45 tan 2 + /

   HP Calculator Impelementation

			X	Y	Z	T
	2		2	.	.	.
	ENTER		2	2	.	.
	15		15	2	.	.
	*		30	.	.	.
	SIN		0.5	.	.	.
	8		8	0.5	.	.
	*		4	.	.	.
	5		5	4	.	.
	+		9	.	.	.
	45		45	9	.	.
	TAN		1	9	.	.
	2		2	1	9	.
	+		3	9	.	.
	/		3	.	.	.

   The answer is 3 for both methods.

Method 2 requires 3 less ENTERs.

Example 3:

   Algebraic Expression [3 * ln(e^2) + 8 * cos(60)] / [3 * 4^0.5 - 1]

   Reverse Polish Expression 3 e ^2 ln * 8 60 cos * + 3 4 ^0.5 * 1 - /

   HP Calculator Implementation

			X	Y	Z	T
        3               3       .       .       .
        ENTER           3       3       .       .
        1               1       3       .       .
        e^x             2.718   3       .       .
        x^2             7.389   3       .       .
        LN              2       3       .       .
        *               6       .       .       .
        8               8       6       .       .
        ENTER           8       8       6       .
        60              60      8       6       .
        COS             0.5     8       6       .
        *               4       6       .       .
        +               10      .       .       .
        3               3       10      .       .
        ENTER           3       3       10      .
        4               4       3       10      .
        ROOT(x)         2       10      .       .
        *               6       10      .       .
        1               1       6       10      .
        -               5       10      .       .
        /               2       .       .       .

   Reordered Algebraic [ln(e^2) * 3 + cos(60) * 8] / [4^0.5 * 3 - 1]

   Reverse Polish e ^2 ln 3 * 60 cos 8 * + 4 ^0.5 3 * 1 - /

   HP Calculator Implementation

			X	Y	Z	T
       1                1       .       .       .
       e^x              2.718   .       .       .
       x^2              7.389   .       .       .
       LN               2       .       .       .
       3                3       2       .       .
       *                6       .       .       .
       60               60      6       .       .
       COS              0.5     6       .       .
       8                8       0.5     6       .
       *                4       6       .       .
       +                10      .       .       .
       4                4       10      .       .
       ROOT(x)          2       10      .       .
       3                3       2       10      .
       *                6       10      .       .
       1                1       6       10      .
       -                5       10      .       .
       /                2       .       .       .

   The answer is 2 for both methods.

With a little practice, it is possible to rapidly evaluate long expressions containing many nested parentheses without ever stopping to think about how terms are grouped. Always start in the innermost parentheses and work out, evaluating products and quotients before sums and differences. Once you get the hang of it, you can even do complex calculations with the display window covered and get the right answers. Try that with a calculator that uses algebraic notation, and chances are you will get a different answer every time if you don't get lost first. That tends to happen to me with algebraic notation calculators even with the display window uncovered. If you own a HP calculator and think in terms of algebraic notation, go buy a TI calculator and forget this page.

Home.


This page is not a publication of the Georgia Institute of Technology and the Georgia Institute of Technology has not edited or examined the content. The author of this page is solely responsible for the content.


o ooO