hcHello·Calc
Back to calculator
v1.0 · all 23 build phases complete

Hello Calc

A faithful emulator of 35 classic HP calculators — from the HP-35 (1972) to the HP Prime (2013) — built over one shared TypeScript math engine, plus a keyboard-first native mode that exposes the whole engine directly.

What it is

Every machine is a pixel-honest faceplate driven by the real key-to-function data for that model, so pressing a key does exactly what the hardware did. Underneath, all 35 models — and the native mode — run on the same engine: a single exact value tower, two stack machines, and feature modules for units, the symbolic CAS, plotting, finance and statistics.

It runs entirely in your browser as a static site — no server, no account. Your session (stack, memory, variables, history and the active model) autosaves locally and exports as a versioned JSON file you can re-import anywhere.

Current status

35
models emulated
0
inert keys
2
stack machines
3
CAS tiers

Every model is fully wired: no key remains inert, and each machine is guarded by an automated coverage check that fails the build if any function is left unimplemented. The whole project is backed by 400+ unit tests and an end-to-end Playwright suite that must pass before any change ships.

The engine

One exact value tower

Every model computes on a single math.js instance configured to BigNumber (40-digit precision), so 0.1 + 0.2 is exactly 0.3 — no IEEE-754 drift. Finance builds on decimal.js for the same reason.

Two stack machines

A fixed 4-level RPN stack (X / Y / Z / T + LAST X) drives the classics through the HP-16C; a dynamic RPL object stack drives the 28C through the 50g with typed objects, directories and softkey menus.

Keystroke programming

Record-and-run programs with labels, GTO / GSB, conditional skips, ISG / DSE loops and an operation budget — reused by SOLVE and numeric integration.

Complex, matrices & solvers

Complex arithmetic, matrix algebra (determinant, inverse, transpose, RREF, LU / QR / SVD / eigenvalues), a numeric root finder and definite integration.

Units & dimensions

First-class unit quantities: 5 cm + 2 in auto-converts to 10.08 cm, and dimensionally inconsistent operations report a clear error instead of a silent NaN.

Tiered symbolic CAS

A light Nerdamer tier (differentiate, integrate, factor, solve) loads on demand; a heavy Pyodide + SymPy tier (limits, series, partial fractions, Laplace transforms) streams in only when an advanced-CAS key is pressed.

Plotting

2D function and polar plots, statistical scatter / bar / histogram charts, and projected 3D wireframes — sampled in the engine and drawn by a lazily-loaded grapher.

Finance & statistics

Full TVM (solve any variable), amortization, cash-flow NPV / IRR, bond pricing, depreciation, descriptive statistics, curve fitting and probability distributions.

The fleet

Classic

  • HP-351972
  • HP-451973
  • HP-651974

Woodstock

  • HP-251975

Programmable / desktop

  • HP-671976
  • HP-971976

HP-41 series

  • HP-41C/CV1979
  • HP-41CX1983

Voyager

  • HP-11C1981
  • HP-12C1981
  • HP-15C1982
  • HP-16C1982

RPL clamshell

  • HP-28C1986
  • HP-28S1988

Pioneer

  • HP-20S1988
  • HP-27S1988
  • HP-32S1988
  • HP-42S1988
  • HP-32SII1991

Business / financial

  • HP-18C1986
  • HP-17B1988
  • HP-17BII1990
  • HP-19B1988
  • HP-19BII1990
  • HP-12C Platinum2003
  • HP-10BII2001
  • HP-20b2008
  • HP-30b2010

RPL graphing

  • HP-48SX1990
  • HP-48G1993
  • HP-48GX1993
  • HP-49G1999
  • HP-50g2006

Modern

  • HP-35s2007
  • HP Prime2013

Native

  • Native mode

Design principles

The integrated machine
Nameplate, LCD and keyboard are one bezel that reflows across five page templates from phone to desktop — never a floating keypad.
Real keyboard proportions
Each keyboard's aspect ratio derives from its actual key grid and scales uniformly, so nothing is distorted or clipped at any size.
Paper, not pixels
History prints as a calculator tape; the stack and variables are notebook notes — each individually toggleable and placed by the active layout.
Type, don't tap
Per-model physical-keyboard maps with a visible key echo and a cheat sheet, so the whole machine is reachable without the mouse.

Built with

  • Next.js
  • TypeScript
  • math.js / BigNumber
  • decimal.js
  • Tailwind CSS
  • shadcn · Base UI
  • KaTeX
  • CodeMirror
  • Nerdamer
  • Pyodide · SymPy
  • function-plot
  • Vitest
  • Playwright
View the source on GitHub