<-[[.:start]] ====== Benchmarking ====== There is information on HP Calculator Benchmarking online at the HP Museum [[https://www.hpmuseum.org/speed.htm|Benchmarking]] I've used the pseudoCode to test out my own calculators. ===== HP Museum Maths Benchmark ===== ++++ psuedo code | LBL 0 STO 2 1.01234 EEX 6 STO 0 2.345 STO 1 RCL 1 RCL 0 * RCL 1 - RCL 0 / RCL 1 * 3.5 / SQRT 1 STO+ 2 GTO ++++ This needs tweaking for each calculator, some have ''alpha'' register names, some ''numeric''. The handling of the is different in each calculator,too. The PRG is run for 1 minute and the result is found in register 2 (or wherever). ===== HP Museum Trig Benchmark ===== ++++ pseudo code | LBL 56.26 STO 0 0 STO 2 RCL 0 SIN ASIN COS ACOS TAN ATAN LN e^x 1 STO + 2 GTO ++++ ==== Results ==== ^Date^Calculator^Serial No^Maths Result^ Maths % ((versus HP9100 : 679))^Trig Result^Trig %((versus HP9100 : 40))^Comment^ | 12/01/26| DM15L * | 21350 | 99,869 | 14,708% | 17,306 | 43,265% | 3rd Party Firmware {{ :public:calculator:info:lf15c_250408.hex |}} | | 21/09/24 | DM15L * | 21350 | 68,791 | 10,131% | 14,159 | 35,397% | 3rd Party Firmware {{ :public:calculator:guides:lf15c_beta240920.zip |}} | | 20/07/23 | DM32 | 00812 | 46,265 | 6,813% | 12,224 | 30,560% | f/w 2.03 | |26/05/22 |DM42 |06434 |24,701 |3,637% |3,741 |9,352.5% | | |09/05/24 |DM42 * | 06434| 4,976 | 732.8% | 210 | 525.0% | 3rd Party Firmware : C47 00.109.01.03a2 | | 02/08/24 | DM41X | 01266 | 3,273 | 482% | 627 | 1,690% | FAST/USB power : F/W version 2.2 | | 17/09/24 | DM15L * | 21350 | 1,346 | 198% | | | 3rd Party Firmware {{ :public:calculator:guides:lf15c_beta240916_2.zip |}} | |26/05/22 |DM41X |01266 |1,117 |164% |228 |570% |FAST mode | | 02/08/24 | DM41X | 01266 | 1,038 | 152% | 206 | 515% | FAST : F/W version 2.2 | | 14/01/26 | DM41X | 01266 | 900 | 132% | 177 | 442% | FAST : F/W version 2.3 | |23/01/26 | DM15L | 21350 | 790 | 116% | 199 | 497% | F/W DM15_M1B_V34 48MHz | |26/05/22 |DM15L |21350 |676 |99% | 185 | 462.5% |48MHz| |26/05/22 |HP35S |PHA9150KFF|292 |43% |113 |282.5% | | |23/12/25 | DM41L | 05121 | 261 | 38% |140 | 350% | 48MHz F/W DM41_34 | |26/08/24 | DM41L | 05121 | 154 | 22% | 108 | 270% | 48MHz | |26/05/22 |DM15L |21350 |150 |22% |41 |102.5% |12MHz| |26/08/24 | DM41L | 05121 | 96 | 14% | 40 | 100% | 12MHz | |26/05/22 |DM41X |01266 |93 |13% |18 |45% |SLOW mode (original HP41 Speed) | |02/08/24 |DM41X | 01266 | 93 | 13% | 18 | 45% | SLOW : F/W version 2.2 | |28/07/22 |HP11C | 2219AO3710 |37 |5.45%|9 |22.5%| | * Reference is HP9100 : Maths Score = 679, Trig Score = 40 ==== Code (Maths Benchmark) ==== ++++ Listing for DM42 | LBL "BM" 0 STO 02 1.01234E6 STO 00 2.345 STO 01 LBL 02 RCL 01 RCL 00 x RCL 01 - RCL 00 ÷ RCL 01 x 3.5 ÷ SQRT 1 STO+ 02 GTO 02 END ++++ Raw File : Maths Benchmark (bm) file for DM41X & DM42 {{ :public:calculator:progs:bm.raw |}} Raw File : Trig Benchmark (bmt) file for DM41X & DM42 {{ :public:calculator:progs:bmt.raw |}} ++++ Listing for DM41X Maths Benchmark | LBL ¬BM 0 STO 02 1.01234 E6 STO 00 2.345 STO 01 LBL 02 RCL 01 RCL 00 * RCL 01 - RCL 00 / RCL 01 * 3.5 / SQRT 1 ST+ 02 GTO 02 END ++++ ++++ Listing for HP35S | LBL X 0 STO C 1.01234E6 STO A 2.345 STO B RCL B <-- loop in RCL A x RCL B - RCL A ÷ RCL B x 3.5 ÷ √x 1 STO+ C GTO X008 --> loop in ++++ ++++ Listing for DM15L / HP15C | 42,21,15 0 42 2 1 48 0 1 2 3 4 26 6 44 0 2 48 3 4 5 44 1 42,21,2 45 1 45 0 20 45 1 30 45 0 10 45 1 20 3 48 5 10 11 1 44,40, 2 22 2 43 32 LBL E 0 STO 2 1 . 0 1 2 3 4 EEX 6 STO 0 2 . 3 4 5 STO 1 LBL 2 RCL 1 RCL 0 x RCL 1 - RCL 0 ÷ RCL 1 x 3 . 5 ÷ √x 1 STO + 2 GTO 2 RTN ++++ ++++ Listing for DM32 | LBL A 0 STO C 1.01234 E 6 STO A 2.345 STO B LBL B RCL B RCL A X RCL B - RCL A / RCL B X 3.5 / SQRT 1 STO+ C GTO B RTN ++++ ++++ DM15L Memory Dump : Maths = LBL A, Trig = LBL B | DM15_M1B 00 05626000000001 01000000000000 01000000000000 00000000000000 04 04975000fff000 00000000000008 0000000000000c 00999999999eae 08 00000000000000 2a2f87beda1280 00000000bcaf80 00000000000000 10 05626000000001 02345000000000 00000000000000 04000000000001 14 f0000000000402 1b4c4c4c4c4c4c 000000000007f7 000000000007fe 18 00000000000000 0000000000007f 00000000a00000 01990000000002 1c 01387265622000 01579783596001 05000000000000 03000000000000 20 00000000000000 00000000000000 04000000000000 08000000000000 24 02100000000001 00000000000000 00000000000000 00000000000000 f4 00000000000000 00000000000000 00000000000000 b21282dff1cafd f8 f5c0f3fc31fd30 fb31fc30310241 f5f4f3c0f240f6 c6f4f3f2f1f0c0 fc f142f00ab21382 dff1cbbbb9c9b8 c8b7c7300342f0 40f6f2c0f6f50b A: 04975000fff000 B: 04975000fffeae C: 00999999999eae S: 00000000000000 M: 04000000000000 N: 04975000000000 G: 06 ++++ ===== The SAVAGE benchmark ===== From **HPCC** Datafile V37N1 pp38-42 Raw File : Savage Benchmark (svg) for DM41X & DM42 {{ :public:calculator:progs:svg.raw |}} ++++ Listing for self-timed version | LBL "SVG" "SAVAGE" AVIEW RAD 2499 STO 00 1 ENTER ENTER ENTER STO 01 TIME X<> 01 LBL 01 X^2 SQRT LN E^X ATAN TAN + DSE 00 GTO 01 TIME RCL 01 HMS- HR 3600 * END ++++ ++++ Listing for the simple (manual timed) version | No time calculation, it needs a stopwatch to measure the time... for calculators without TIME functions LBL A RAD 2499 STO A (for HP11C "STO I", for DM15L "STO 0") 1 ENTER ENTER ENTER LBL B X^2 SQRT LN E^X ATAN TAN + DSE A (for HP11C "DSE", for DM15L "DSE 0" ) GTO B RTN ++++ ++++ DM15L Memory Dump | DM15_M1B 00 01000000000000 01000000000000 01000000000000 00000000000000 04 32499970322000 00000000000008 0000000000000c 40997997010eae 08 00000000000000 3ebeefb6e4228f e79282e8bc2ac0 00000000000000 10 00000000000000 08000000000000 06000000000000 02498970322003 14 f0000000000504 1b2d2d2d2d2d2d 000000000001fc 00000000000000 18 00000000000000 0000000000007f 00000000a00000 06000000000000 1c 04000000000000 07000000000000 05000000000000 03000000000000 20 00000000000000 00000000000000 04000000000000 08000000000000 24 02100000000001 00000000000000 00000000000000 00000000000000 fc 000000000000b2 1b82fac9b9cbbb caba0bc1c1c1f1 40f9f9f4f2e80a A: 32499970322000 B: 32499970322eae C: 40997997010eae S: 00000000000000 M: 00000000000000 N: 02499970322003 G: 09 ++++ ==== Results ==== On Battery: ^ Calculator ^ Firmware ^ Seconds ^ Mins/seconds ^ Comment ^ Displayed Result ^ |DM15L * | LF15c_beta250217b | 3.862 seconds | 0 mins 3.862 sec | Timed by internal function "runTime" | 2500.00000000118 | |DM15L * | LF15c_beta250215 | 3.969 seconds | 0 mins 3.969 sec | Timed by internal function "runTime" | 2500.00000000118 | | DM15l * | LF15C_250408 | 4.008 seconds | 0 mins 4.008 sec | Timed by internal function "runTime" | 2500.00000000118 | | DM15L * | LF15c_beta241006 | 5.9510 seconds | 0 mins 5.951 sec | Timed by internal function "runTime" | 2500.00000000118 | | DM15L * | LF15C_beta240928 | 6.3 seconds | 0 min 6.3 sec | manually timed | 2500.00000000118 | | DM32 | 2.03 & 2.06 | 6.3 seconds | 0 min 6.3 sec | | 2500.00000000 | | DM42 | 3.22 |14.9 seconds | 0 min 14.9 sec | | 2500.00000000 | | DM41X | 2.1 | 207.03 seconds | 3 min 27.03 sec | FAST mode | 2499.970322 | | DM41X | 2.2 | 244.2 seconds| 4 min 4.25 sec | FAST mode| 2499.970322 | | DM15L | DM15_M1B_V34 | 247.3 seconds | 4 min 34.3 sec | 48MHz | 2499.970322 | | DM41X | 2.3 | 284.15 seconds | 4 min 44.15 sec | FAST Mode | 2499.970322 | | DM15L | DM15_V32 | 288 seconds | 4 min 48 sec| 48MHz | 2499.970322 | | DM41L | DM41_V34 | 513.73 seconds | 8 min 33 sec | 48MHZ | 2499.970322 | | DM41L | DM41_V32 | 758.67 seconds | 12 min 38.67 sec | 48MHz | 2499.970322 | | HP35S | n/a |877 seconds | 14 min 37 sec | | 2499.99939863 | | DM41L | DM41_V34 | 1285.93 seconds | 21 min 25.93 seconds | 12MHz | 2499.970322 | | DM41X | 2.1 |2652.37 seconds | 44 min 12.37 sec |SLOW mode | 2499.970322 | | HP11C | |5160 seconds | 1 hour 26 min 0 sec | | 2499.970322 | On USB Power : * DM41X : 58.1 seconds (FAST mode) * DM42 : 5.56 seconds ===== N-Queens ===== * [[https://www.hpmuseum.org/cgi-bin/articles.cgi?read=700]] Raw File : N-Queens file (nqu) for DM41X & DM42 {{ :public:calculator:progs:nqu.raw |}} ++++ Listing for HP41/DM41X/DM41L/HP42/DM42 | // for HP41 / HP 42 ... DM41X, DM41L, DM42 // shows run-time on completion LBL "NQU" CLRG TIME STO 20 8 STO 11 LBL 00 RCL 00 RCL 11 X=Y? GTO 04 ISG 00 DEG STO IND 00 LBL 01 ISG 10 DEG RCL 00 STO 09 LBL 02 DSE 09 DEG RCL 09 X=0? GTO 00 RCL IND 00 RCL IND 09 - X=0? GTO 03 ABS RCL 00 RCL 09 - X<>Y? GTO 02 LBL 03 DSE IND 00 GTO 01 DSE 00 GTO 03 LBL 04 RCL 10 TIME RCL 20 HMS- HR 3600 * RTN ++++ ++++ Listing for DM15L with 3rd party f/w | LBL 88 CLEAR REG 8 STO 10 LBL 80 RCL 0 RCL 10 X=Y? GTO 84 1 STO+ 0 RCL 0 STO I RCL 10 STO (i) LBL 81 1 STO+ 11 RCL 0 STO 9 LBL 82 1 STO- 9 RCL 9 X=0? GTO 80 RCL 0 STO I RCL (i) RCL 9 STO I RDN RCL (i) - X=0? GTO 83 ABS RCL 0 RCL 9 - X<>Y? GTO 82 LBL 83 RCL 0 STO I 1 STO- (i) RCL (i) X<>0? GTO 81 1 STO- 0 RCL 0 X<>0? GTO 83 LBL 84 RCL 11 runTime RTN ++++ ++++ Listing for DM15L / HP15C | LBL A CLR_REG 8 STO .0 LBL 0 RCL 0 RCL .0 TEST 5 GTO 4 1 STO+0 RCL 0 STO I RCL .0 STO (i) LBL 1 1 STO+.1 RCL 0 STO 9 LBL 2 1 STO-9 RCL 9 x=0 GTO 0 RCL 0 STO I RCL (i) RCL 9 STO I R_down RCL (i) - x=0 GTO 3 ABS RCL 0 RCL 9 - TEST 6 GTO 2 LBL 3 RCL 0 STO I 1 STO-(i) RCL (i) TEST 0 GTO 1 1 STO-0 RCL 0 TEST 0 GTO 3 LBL 4 RCL .1 RTN ++++ ^Date^Calculator^Serial No.^Firmware^Seconds^Mins : Secs^Comment^ |12/01/26| DM15L* |21350 | LF15C_250408 | 0.992 seconds | 0:0.992 | Self-timed with runTime function | |11/01/26| DM42 | 06434 | 3.26 | 7.82 seconds | 0:07.82 | Battery | |14/01/26| DM41X | 01266 | 2.3 | 49.55 seconds | 0:49.55 | FAST mode / USB Power | |10/01/26| DM41X | 01266 | 2.3 | 101.29 seconds |1:41.29 | FAST mode / battery | |23/01/26| DM15L | 21350 | DM15_M1B_34 | 202.16 seconds | 3:22.16 | 48MHz, manually timed | |10/01/26| DM41L | 05121 | DM41_V34 | 509.19 seconds | 8:29.19 |48MHz | |11/01/26| DM41L | 05121 | DM41_V34 | 870.58 seconds | 14:30.58 | 12MHz | |10/01/26| DM41X | 01266 | 2.3 | 1008.60 seconds | 16:48.60 | SLOW mode / battery | * Running 3rd party firmware [[https://www.hpmuseum.org/forum/thread-20046.html]] ===== Tony's Benchmark ===== From [[http://www.thimet.de/CalcCollection/CalcPerformance.html]] ==== Code ==== ++++ Listing for the benchmark | LBL A (For DM41X and DM42 : LBL "AA") 10 STO A (For DM41X and DM42 : STO 00 ) LBL B 1 + 4.567E-4 - 70 + 69 - 7 x 11 / RCL A (RCL 00) 1 - STO A (STO 00) X≠0? GTO B R↓ LOG SIN SQRT SQRT RTN LBL C (For DM41X and DM42 : LBL "TBM") XEQ A (XEQ "AA") RCL C (RCL 03) 1 - STO C (STO 03) X≠0? GTO C (GTO "TBM") RTN ++++ For multiple loops store a Loop Count in C (or in Register 03) (''1000 STO C'') and then ''XEQ C'' For single loop (slow calculator) simply ''XEQ A'' Result is the time to complete the loop(s) and deliver the answer ''0.264577'' Performance Index is calculated as ''Loops x 34 / Time'' For 1000 loops in 13 seconds: '' 1000 x 34 / 13 = 2615.38 '' ==== Results ==== ^Date^Calculator^Serial No^Loops^Time^Performance Index^Comments^Result^ |22/11/23| DM42 | 06434 | 1000 | 8 sec | 4250 | USB Power | | |22/11/23| DM32 | 00812 | 1000 | 13 sec | 2615 | f/w : 2.06 |0.26457749818 | |22/11/23| DM42 | 06434 | 1000 | 21 sec | 1619 | Battery Power | 0.26457749818 | |21/09/24| DM15L * | 21350 | 1000 | 42.8 sec | 794 | 3rd Party Firmware : LF15C_beta240921 | 0.26457749817596 | |21/09/24| DM15L * | 21350 | 100 | 4.5 sec | 756 | 3rd Party Firmware : LF15C_beta240921 | 0.26457749817596 | |22/11/23| DM41X| 01266 | 20 | 6 sec | 113 | FAST mode / USB | | |09/05/24| DM42 * | 06434 | 30 | 9.6 sec | 106 | 3rd Party Firmware : C47 00.109.01.03a2 | |22/11/23| DM15L | 21350 | 10 | 12 sec | 28 | 48MHz | 0.264577498 | |22/11/23| DM41X| 01266 | 10 | 10 sec | 24 | FAST mode / Battery | 0.264577498 | |22/11/23| HP35S | PHA9150KFF | 5 | 25 sec | 6.8 | | | |22/11/23| DM15L | 21350 | 10 | 54 sec | 6.3 | 12MHz | 0.264577498| |22/11/23| DM41X| 01266 | 10 | 118 sec | 2.8 | SLOW mode/ Battery| | |22/11/23| HP11C | 2219A03710 | 1 | 21 sec | 1.6 | | | ===== Fingerprinting ===== Each calculator handles the calculation of functions (SIN, COS etc) differently - different algorithms, different degrees of precision etc. One way of spotting similar underlying hard/firmware is to carry out a fixed chained calculation on each calculator and to observe the result. One common test is a sequence of SIN COS TAN ATAN ACOS ASIN on a relatively low starting number - such as 9 9SINCOSTAN ATAN ACOS ASIN gives a number (hopefully) very close to the starting value of ''9'' - and the variance from ''9'' is a fingerprint that can be used to spot similarities between different models. ^Calculator^ Displayed Result ((at max. display resolution))^ Error (Result - 9) ^Firmware ^ | HP11C | 9.000417403 | 4.17403e-4 | | | DM15L | 9.000417403 | 4.17403e-4 | DM15_V32 | | DM41X | 9.000417403 | 4.17403e-4 | 2.1 | | DM41L | 9.000417403 | 4.17403e-4 | DM41_V32 | | HP35S | 8.99999986001 | -1.3999e-7 | | | DM15L * | 8.99999999983416 | -1.65842e-10 | 3rd party LF15C_beta240916 17/09/24 | | DM42 | 9.00000000000 | -6.2466e-29 | DM42 3.22 / Free42 3.0.15 | | DM32 | 9.00000000000 | -6.2466e-29 | 2.06 | ==== Page Info ==== Page created Thu May 26 07:58:36 2022 by John Pumford-Green Page last updated: ~~LASTMOD~~ {{tag>calculator}} ===== Further Information =====