RPN: A Comparison of Programming Methods: Stack vs. Storage Arithmetic with the HP 32SII
News: The RPN series will continue for 2026: Every second Sunday!
Today we will compare two methods to tackle mathematical problems with the HP 32SII. The code presented here will also work with the HP 32S original and the Swiss Micros DM32.
Method 1 (left column): Use of the stack and when necessary, variables to store immediate results.
Method 2 (right column): Use of storage arithmetic to most, if not all, of the arithmetic operations.
What is Storage Arithmetic?
Storage arithmetic executes an arithmetic operation while simultaneously storing the result in the variable.
In all the examples, assume the variable Z starts with the value of 10.
STO+: Storage Addition
Adds the value in the display to the value stored in the variable and stores the result. Outside of RPN and Hewlett Packard calculators, storage addition is the most common storage arithmetic function. On four function calculators and adding machines, storage arithmetic is symbolized with M+. On Texas Instruments scientific calculators, such as the TI-30Xa and the classic TI-30 series, storage addition occurs with the SUM key.
2 STO+ Z adds 2 to Z. The value of Z is now 12.
In Python, the general syntax for storage addition:
var+=<expression>
STO-: Storage Subtraction
Subtracts the value in the display from the value stored in the variable and stores the result. On four function calculators and adding machines, storage arithmetic is symbolized with M-. If you have a TI-55 (1970s version), TI-57 (1970s version), TI-58, TI-59, or T-66, storage subtraction is executed by INV SUM.
2 STO- Z subtracts 2 from Z. The value of Z is now 8.
In Python, the general syntax for storage subtraction:
var-=<expression>
STO×: Storage Multiplication
Multiplies the value in the display from the value stored in the variable and stores the result. If you have a TI-55 (1970s version), TI-57 (1970s version), TI-58, TI-59, or T-66, storage subtraction is executed by Prod (or Prd).
2 STO× Z multiplies 2 to Z. The value of Z is now 20.
In Python, the general syntax for storage multiplication:
var*=<expression>
STO÷: Storage Multiplication
Multiplies the value in the display from the value stored in the variable and stores the result. If you have a TI-55 (1970s version), TI-57 (1970s version), TI-58, TI-59, or T-66, storage subtraction is executed by INV Prod (or Prd).
2 STO÷ Z divides Z by 2. The value of Z is now 5.
In Python, the general syntax for storage multiplication:
var/=<expression>
Example Problems
For fairness, both methods store the final result in Z. Only storage arithmetic is used because not all RPN calculators have recall arithmetic.
Problem 1: (1 + √5) ÷ 2 ≈ 1.61803398875
LBL A 5 SQRT 1 + 2 ÷ STO Z RTN
15.0 bytes |
LBL B 1 STO Z 5 SQRT STO+ Z 2 STO÷ Z RCL Z RTN
15.0 bytes |
Problem 2: 4² + 3 × 4 – 5 = 4 × (4 + 3) – 5 = 23
LBL C 4 STO X 3 + RCL X × 5 - STO Z RTN
15.0 bytes |
LBL D 4 STO X STO Z 3 STO+ Z 4 STO× Z 5 STO- Z RCL Z RTN
18.0 bytes |
Problem 3: √(8.5² + 9.6²) ≈ 12.8222462931
LBL E 8.5 x² 9.6 x² + SQRT STO Z RTN
29.5 bytes |
LBL F 8.5 STO Z STO× Z 9.6 STO Y STO× Y RCL Y STO+ Z RCL Z SQRT STO Z RCL Z RTN
37.0 bytes |
Problem 4: (7 × 12) ÷ (7 + 12) ≈ 4.42105263158
LBL G 7 STO X 12 STO Y × RCL X RCL Y + ÷ STO Z RTN
18.0 bytes |
LBL H 7 STO X STO Y 12 STO× X STO+ Y RCL X RCL Y ÷ STO Z RTN
19.5 bytes |
Problem 5: 1 ÷ (1 ÷ 4.5 + 1 ÷ 8 + 1 ÷ 6.7) ≈ 2.01419624217
LBL I 4.5 1/x 8 1/x 6.7 1/x + + 1/x STO Z RTN
35.5 bytes |
LBL J 4.5 1/x STO Z 8 1/x STO+ Z 6.7 1/x STO+ Z RCL Z 1/x STO Z RCL Z RTN
38.5 bytes |
Problem 6: 2 × (10.3 – 4.9) + 3 × (5.4 – 2) = 21
LBL K 10.3 4.9 - 2 × 5.4 2 - 3 × + STO Z RTN
45.0 bytes |
LBL L 10.3 STO Y 4.9 STO- Y 2 STO× Y 5.4 STO Z 2 STO- Z 3 STO× Z RCL Y STO+ Z RCL Z RTN
49.5 bytes |
Findings
I like storage arithmetic. However from these results, storage arithmetic uses a bit more memory than merely using the stack. Storage arithmetic can be handy dandy technique in programming, not just in keystroke programming but other programming languages like Python.
Eddie
All original content copyright, © 2011-2026. Edward Shore. Unauthorized use and/or unauthorized distribution for commercial purposes without express and written permission from the author is strictly prohibited. This blog entry may be distributed for noncommercial purposes, provided that full credit is given to the author.
The author does not use AI engines and never will.