HP-12C Will Never Die

Overview

The HP-12C is the only HP RPN calculator which is still produced and sold, despite is was designed in 1980. The calculator is produced by a subsidary licensed by HP, and you can find it around 40$ in US and at around 70€ in Europe. There was designed more than 14 diferent revisions by HP.

The HP-12C has less memory than tiny pocket calculators sold for a fraction of its price...how this is possible?

Obiovus errors even on such unrealistic problems can undermine user confidence. The only way to prevent apprehension is to preclude all anomalities. For this reason, we set out to produce such robust alghorithms that the user need never be concerned with questions of accuracy or operating limits.
From the Roy Marting article of 1977 (below detials).

This calculator is accepted in some official examinations, and there is for sure some fashion on this phenomenon. But let's explore the HP-12C step by step.

:right
HP-12C Gold Version

The HP-12C provide built-in functions to compute interests, solve problem like amortizing the interest over the life of a loan. It has no alphanumeric display, and the current versions run on top of an emualtor which still use the 1981 original firmware, with some precision increase only.

HP-12C is also programmable, but has no solver (like the HP-15C) and some buttons performs more than one operation.

HP-12C became the de facto standard among financial professionals.

I like the ideas around the HP-12C:

  • a tool which solve real-world problem
  • careful crafted mathematical formula
  • ergonomic and user interface
  • precision is a first-priority for this business calculator

The formula

The algorithm to compute the composite interest was designed by Roy Martin and William Kahan and described on an article of the HP Journal of 1977 about the "brand new" HP-92.

The formula of the compound interest in the HP-12C / HP-92 can be solved for any of its variable. the previous series of caluclator like HP-80 emploied three different forumulas for computing Compound Amount, Loan and Sinking Fund.

The general formula is

$$ PV(1+i)^n + PMT\frac{[(1+i)^n-1]}{i}+FV = 0 $$

where

  • i is the interest rate between 0 and 1
  • n is the number of compounding periods
  • PV means the Present value of cash
  • PMT recurring payment value
  • PV Future Value at the end of the payments. Negative means something outside your pocket.

So the specification was "simple": the HP-12C should employ a specialized "solver" to find one of the variable above, given the value of the others.

Normally you will use a Newton method, based on the first derivate to find a first approximation of the solution, to move towards it. The initial extimation for the Newton method must be chosed wisley, to avoid going in the opposite direction in respect of where the solution is headed (!)

Also, when you need to solve for the interest (i) it is very easy to have trouble; for instance the term

$$ \frac{(1+i)^n-1}{i} $$

can have a error known as catastrophic cancellation on the numerator. The Catastrophic cancellation happens when you subtract two number with a lot of significant digits in common, which leads to lost of precision. The problem is well known and the reason is simple: real numbers are always approximated inside a computer.

Wrapping up the success

So HP engineers solved all these challenges, and provided to the customers a true realiable calculator. This successful software is still the same, after 45 years!

Below a list of all the models, including clones (taken from this forum entry)

Models from HP

--------------------------------------------------------------------------------------------------------------------------------------------------------
#  Model            P/N     Years    Features                 CPU                           Clock   Execution        F/W   IO-plug Power-Supply    Speed
--------------------------------------------------------------------------------------------------------------------------------------------------------
1  12C              F1637A? 81-88?   RPN, 20R, 100S           1LF5 (HP NUT)                 884KHz  Native           ROM           4.5V (3xLR44)   x1
2  12C              F1637A? 81?-88?  RPN, 20R, 100S           1LM2 (HP NUT)                 884KHz  Native           ROM           4.5V (3xLR44)   x1
3  12C              F1637A? 88-01?   RPN, 20R, 100S           1LQ9 (HP NUT)                 884KHz  Native           ROM           4.5V (3xLR44)   x1
4  12C              F1637A? 95-01?   RPN, 20R, 100S           1RR2 (HP NUT)                 884KHz  Native           ROM           4.5V (3xLR44)   x1
5  12C              ?       99?-07   RPN, 20R, 100S           Agilent 2AF1-0001 (HP NUT)    884KHz  Native           ROM           3V (1xCR2032)   x1
6  12C              ?       01?-07   RPN, 20R, 100S           Marvell 2AF1-0002 (HP NUT)    884KHz  Native           ROM           3V (1xCR2032)   x1
7  12C Platinum     F2231A  03-05?   RPN,ALG,30R,400S,+digits Sunplus SPLB20D2 (6502)       ~1MHz   Native,upd.specs ROM           3V (1xCR2032)   x1.5?
8  12C Plat.(v2)    F2232A  05?-10?  RPN,ALG,(),BS,80R,400S   Generalplus GPLB31A (6502)    ~4MHz   Native,upd.specs ROM           3V (1xCR2032)   x6?
9  12C Prestige     F2233A  06-?     RPN,ALG,(),BS,80R,400S   Generalplus GPLB31A (6502)    ~4MHz   Native,upd.specs ROM           3V (1xCR2032)   x6?
10 12C Plat.25th AE F2231AA 06-08?   RPN,ALG,(),BS,80R,400S   Generalplus GPLB31A (6502)    ~4MHz   Native,upd.specs ROM           3V (1xCR2032)   x6?
11 12C (+, v1)      F2230A  08-?     RPN, 20R, 100S           Atmel AT91SAM7L128 (ARM7DTMI) ~36MHz  Emulated HP NUT  FLASH 6p(ser) 3V (2xCR2032)   x60
12 12C Plat.(v3)    F2232A  10-?     RPN,ALG,(),BS,80R,400S   Generalplus GPLB31A (6502)    ~4MHz   Native,upd.specs ROM           3V (2xCR2032)   x6?
13 12C 30th AE LE   NW258AA 2011     RPN, 20R, 100S           Atmel AT91SAM7L128 (ARM7DTMI) ~36MHz  Emulated HP NUT  FLASH 6p(ser) 3V (2xCR2032)   x60
14 12C (+, v2)      F2230A? 2015-    RPN, 20R, 100S           Atmel ATSAM4LC2C (Cortex-M4)  ~48MHz  Emulated HP NUT  FLASH 6p(usb) 3V (2xCR2032)   x60?
--------------------------------------------------------------------------------------------------------------------------------------------------------

3rd party (Clones):

--------------------------------------------------------------------------------------------------------------------------------------------------------
#  Model            P/N     Years    Features                CPU                           Clock    Execution        F/W   IO-plug Power-Supply    Speed
--------------------------------------------------------------------------------------------------------------------------------------------------------
15 Aurora FN1000            2003     Clamshell based on 12C                                         Native,custom Specs                              
16 Truly SC123              2005     Vertical based on 12CP                                         Native,custom Specs                                
17 Victor V12               ?        Based on 12C Plat.25thAE                                       Native,custom Specs                          
18 BrtC FC-12               ?        Based on 12CP 25thAE                                           Native,custom Specs                              
19 Compucessory CCS28956    2010     Clamshell based on 12CP                                        Native,custom Specs                        
20 SwissMicros DM-12CC      2012     Based on 12C, USB        NXP LPC1114 (ARM Cortex-M0)   ~48MHz  Emulated HP NUT  FLASH USB     3V (1xCR2032)   x30
21 SwissMicros DM-12        2013?    Based on 12C, USB        NXP LPC1115 (ARM Cortex-M0)   ~48MHz  Emulated HP NUT  FLASH USB     3V (1xCR2032)   x30
22 SwissMicros DM-12 SE     2014?    Based on 12C, USB        NXP LPC1115 (ARM Cortex-M0)   ~48MHz  Emulated HP NUT  FLASH USB     3V (1xCR2032)   x30
-------------------------------------------------------------------------------------------------------------------------------------------------------

SwissMicros clone are very well done, but a lot overpriced in our humble opinion.

You can find a windows emulator based on recent version (2012) here https://www.educalc.net/page/2338917/. This version can be run on macOS+whisky without problems. It also include the manual and a solution handbook and has a multi-language installation.

A older one (2008) with sources could be found here https://www.hpcalc.org/details/9554 (related discussion: https://www.hpmuseum.org/forum/post-187566.html).

Sadly, I have an hard time getting the original 1981 firmware for the "HP Nut" processor, if someone can provide it to me... As far as I can understand the software was relased in the public domain by HP. It could be interesting to design an emulator based on the original firmware.