Two very simple benchmarks were run on various calculators. The Math benchmark tested the four basic functions and square root. The Trig benchmark tested the six basic trig functions plus natural log and antilog and spent proportionately more time in core math routines than the math benchmark. The results were normalized to the HP9100A which was given a score of 100. (Higher scores are better.) These simple benchmarks may not represent real world usage.
Speed / dollar is calculated as (2×math score + trig score) ÷ price × 100. Naturally, this simple number penalizes machines with advanced features. No attempt to compute "power / dollar" was made due to the complexity of assigning values for the number of steps, flexibility in memory management, continuous vs. noncontinuous memory, peripherals, etc.
Model  Intro Year 
Intro Price 
Math  Trig  Speed / dollar 

HP 9100A  1968  $4900  100  100  6 
HP 9810A ^{1}  1971  $2960  110  183  13 
HP9830A ^{2}  1972  $5975  108  195  7 
HP65  1974  $795  7  25  5 
HP25  1975  $195  6  25  19 
HP 9815A  1976  $2900  96  123  11 
HP 9825A  1976  $5900  977  1140  52 
HP67  1976  $450  6  23  8 
HP97  1976  $750  7  23  5 
HP34C  1979  $150  5  18  19 
HP41C  1979  $295  13  45  24 
HP85B ^{2}  1979  $3,250  275  398  29 
HP11C  1981  $135  6  25  27 
HP75D  1984  $1095  191  478  79 
HP71B  1984  $525  132  378  122 
HP28C  1988  $235  65  320  191 
HP42S  1988  $120  32  330  328 
HP32SII  1991  $70  86  370  774 
HP48S  1991  $250  113  655  352 
HP48G  1993  $165  159  1150  889 
HP48G SysRPL^{*}  1993  $165  378  1350  1276 
HP48G Assembly^{†}  1993  $165  1397  2018  2916 
HP49G^{‡}  1999  $179  262  1325  1033 
HP49G+  2003  $176  643  2535  2171 
The trigonometric algorithms in the handhelds appeared to be more efficient than the those used in the desktops but the desktops calculated trig functions accurate to 12 digits vs. 9 for the early handhelds. On the HP67/97 handheld accuracy improved to 10 digits and on the HP41C and RPL calculators, handheld accuracy was comparable to the desktops.
The code was changed as little as possible when ported. Both benchmarks had a single loop which was implemented using labels on labelbased machines. Some machines like the HP67 and HP34C might have shown higher benchmark numbers if the benchmark was recoded using line addressing via the indirect register.
The recent handhelds have plenty of horsepower as evidenced by the trigonometric test, but they also have more overhead with larger screens, multiple data types, unlimited stacks, etc. As a result, the math results are not as impressive because they spend proportionately more time on overhead.
Notes:
Each of the benchmarks sets R2 to zero and then runs indefinitely, adding 1 to R2 on each iteration. Each benchmark was run for one minute and then stopped (R/S key pressed) and then the counter in R2 was recalled (RCL 2). To normalize results to the HP 9100, the value in R2 was divided by the R2 value for the HP 9100 (below) and then multiplied by 100. For example, after running the math benchmark for one minute, register 2 (or C as ported ) on the HP 32SII was 587. 587÷679×100 = 86% of HP 9100 speed. Individual runs may vary by a few percent and different samples of each model may also vary.
Math pseudo code HP 9100 final R2 value: 679 
Trig pseudo code HP 9100 final R2 value: 40 

0 STO 2 1.01234 EEX 6 STO 0 2.345 STO 1 <loop> RCL 1 RCL 0 × RCL 1  RCL 0 ÷ RCL 1 × 3.5 ÷ SQRT 1 STO + 2 GTO loop 
56.26 STO 0 0 STO 2 <loop> RCL 0 SIN ASIN COS ACOS TAN ATAN LN e^{x} 1 STO + 2 GTO loop 
This SysRPL port was provided by Frido Bohn.
Disclaimer: The author and The Museum of HP Calculators do not take any responsibilities for any kind of damages caused directly or indirectly by this application.Notes from Frido:
Simply transfer bench.bin into your HP48 and run it!
After the first minute the results for the Math PseudoCode should appear. After another minute those for the Trig PseudoCode. If not...try ONC for reset.
The program runs 1 minute each test (=2 minutes). One should look if it really runs for that time. Sometimes it only runs one loop  might by some problem with HEXINT conversions by the timer.
The sourcecode was assembled with Jazz V 6.8.
You may also download the compiled code.
:: DEFINE a 1GETLAM DEFINE b 2GETLAM DEFINE c 3GETLAM DEFINE start 4GETLAM DEFINE timr 5GETLAM DEFINE !a 1PUTLAM DEFINE !b 2PUTLAM DEFINE !c 3PUTLAM DEFINE !start 4PUTLAM DEFINE !timr 5PUTLAM { NULLLAM NULLLAM NULLLAM NULLLAM NULLLAM } BIND TOADISP CLEARLCD xERASE %2 xFIX % 112880 !timr % 1012340 !a % 2.345 !b ZERO !c $ "Math PseudoCode" DISPROW1 CLKTICKS timr bit#%+ HXS># !start BEGIN b a %* b % a %/ b %* % 3.5 %/ %SQRT DROP c #1+ !c CLKTICKS HXS># start #> UNTIL $ "Iterations: " c FOUR #* #>$ &$ DISPROW2 $ "Benchmark: " c UNCOERCE % 679 %4 %/ %/ %100 %* a%>$ &$ DISPROW3 $ "Trig PseudoCode" DISPROW5 % 56.26 !a ZERO !c CLKTICKS timr bit#%+ HXS># !start BEGIN a %SIN %ASIN %COS %ACOS %TAN %ATAN %LN %EXP DROP c #1+ !c CLKTICKS HXS># start #> UNTIL $ "Iterations: " c FOUR #* #>$ &$ DISPROW6 $ "Benchmark: " c UNCOERCE %10 %/ %100 %* a%>$ &$ DISPROW7 xSTD ABND DEPTH NDROP SetDAsTemp ;
These HP48G Saturn assembly ports were provided by Jonathan Busby. The code is available here.
These HP49G ports were provided by Marco G. Salvagno. A bint counter was used for speed.
Math pseudo code
<< 1012340 2.345 → R0 R1 << #1d #2000d FOR i R0 R1 * R1  R0 / R1 * 3.5 / sqrt DROP i NEXT >> >>
Trig pseudo code
<< #1d #600d FOR i 56.25 SIN ASIN COS ACOS TAN ATAN LN EXP DROP i NEXT >>
Go back to the main exhibit hall
Go back to the technologies page