RPNx is a terminal RPN scientific calculator in the classic Hewlett-Packard tradition: a live X/Y/Z/T stack, Last X, the full math / trig / log / stats / base-conversion command set, and a runner for XRPN (HP-41 / FOCAL) programs. Part of the Fe₂O₃ Rust terminal suite.
It shares its calculation engine (fe2o3-rpnx-core) with the
RPNx Android app, so
the pocket calculator and the terminal one compute — and format numbers —
identically. RPNx is the spiritual successor to the Ruby
T-REX, rebuilt on that shared engine.
Install
# Linux x86_64 curl -L https://github.com/isene/rpnx/releases/latest/download/rpnx-linux-x86_64 \ -o ~/bin/rpnx && chmod +x ~/bin/rpnx
Or build from source (needs Rust):
git clone https://github.com/isene/rpnx && cd rpnx cargo build --release # binary at target/release/rpnx
How RPN works
Reverse Polish Notation has no = and no parentheses: you push numbers onto a
stack and operators act on what's there. To compute (3 + 4) × 5: type 3,
ENTER, 4, + (the stack now holds 7), then 5, * → 35. Once it
clicks, it is faster and less error-prone than an algebraic calculator, because
you see every intermediate result in the stack.
The stack is X (bottom, the entry line), Y, Z, T (top), with L holding the last X for undo-style recovery.
Keys
Number entry: digits, ., e (exponent), h (±), ENTER to push, ⌫ backspace.
| Group | Keys |
|---|---|
| stack | ← x⇄y · ↑↓ roll · l LASTx · c clear X · C clear stack |
| arith | + − × ÷ · \ mod · % percent |
| power | q √ · x 1/x · ^ yˣ · p π · | |x| · ! factorial |
| trig | i sin · o cos · a tan · I/O/A arc · r rad · d deg |
| log | n ln · g log |
| modes | f fix · s sci · ' number format (comma/dot) · u undo |
| regs | S store · R recall |
Cycling shift pages
TAB cycles four coloured pages (like the HP f/g shift keys), each overlaying
its functions on the keys while every base key keeps working. ESC returns to
base.
| Page | Colour | Functions |
|---|---|---|
| f | gold | x² x³ eˣ 10ˣ ˣ√y |
| g | blue | Σ+ Σ− mean sd CLΣ int frc drop Δ% |
| h | green | eng grad rnd hms hr →P →R |
Command palette
Press : and type any XRPN command by name — every function in the engine,
including the long tail (sqr, cube, hms, r_p, eng, sdev, …). This is
also how you will run and edit XRPN programs.
The stack, registers, flags and display mode persist across sessions in
~/.config/rpnx/state.
Programs — the magnetic-card top row
RPNx runs XRPN programs: the HP-41 / FOCAL
language with labels, GTO/XEQ/RTN, conditionals, ISG/DSE, and
PROMPT. Load one with L (or rpnx program.xrpn). Its global labels
(LBL "NAME") become the top row, bound to F1..F10 — the way an
HP-67's magnetic card overlaid its top keys.
A built-in TVM (time-value-of-money) solver is the example: press L, then
Enter, to load it. Its labels are N / I / PV / PMT / FV, and each behaves like a
financial HP — key a number then press a label to store it, or press a label
alone to solve for that variable from the other four:
10 F1 store N = 10 periods
5 F2 store I = 5% per period
-1000 F3 store PV (1000 h F3)
-100 F4 store PMT (100 h F4)
F5 solve FV -> 2 886,6839
F2 solve I -> 5,0000 (re-solves the rate by iteration)
This works because RPNx sets HP flag 22 when you key a number; the program
tests it (FC? 22) to choose store vs solve. N / PV / PMT / FV are closed-form;
I is found by the secant method. A program that hits STOP or PROMPT resumes
with SPACE. The source is examples/tvm.xrpn — a template
for your own cards.
In your editor: scribe =
scribe (the Fe₂O₃ editor) launches RPNx on
the normal-mode = key: do a calculation, quit with Q, and the X register is
inserted at the cursor. Any tool can do the same with rpnx --emit-file <path>
(RPNx writes X there on a normal quit) or rpnx --emit-x (prints X to stdout).
Pocket version
The RPNx Android app is the same calculator on your phone — an HP-41-style keypad over the identical Rust engine, part of the nomad mobile suite.
License
Unlicense — public domain. Borrow or steal whatever you want.