RPN-25 CE — Photo-realistic HP-25C simulator for the iPhone

Version 2.5

RPN-25 CE is a simulation of Hewlett-Packard's popular second-generation scientific calculator HP-25C.

Released on August 1, 1975, the HP-25 scientific calculator was the second member of the so-called "Woodstock" series (between the HP-21 and the HP-22.) It was followed a year later by the improved version HP-25C which sported "continuous" (non-volatile) memory. Both versions were discontinued in 1978.

RPN-25 CE is a massively enhanced version of the HP-25C.



Tap the wrench symbol or triple-tap the display to access the
settings screen:

Extended Register View

This view shows all 100 registers. It is accessed manually by swiping left the display in RUN mode. It may also be opened under program control by executing REGS ALL.

For performance reasons, the display is not refreshed while a program is running. However, executing REGS ALL in a program will refresh the view.
(Run the program Bell Numbers Advanced to see this in action.)


Image created by "Bell Numbers Advanced"


Version History RPN-25 CE

2.5 – Dec 17, 2020
  • New:

  • • Execute Extra Functions in RUN mode
  • Changed: double-tap display for Extra Functions; triple-tap for Settings

  • VIEW instruction to watch any memory or stack register while program is running
  • CLD (Clear Display) restores normal display after VIEW
  • DSMSTO and DSMRCL (Display Mode Store and Recall) store or restore display settings

  • REGSET sets any range of registers to a given value
  • REGSORT sorts any range of registers
  • xi≷yi: swap registers defined in X and Y

  • Date instructions:
      DATE: current date (month, day, year)
      DATE+: add number of days in X to the date in Y
      ∆DAYS: number of days between the dates in X and Y
      DOW: day of the week, day number, week number
      MDY➞YMD, YMD➞DMY, DMY➞MDY, etc.: date format conversions

  • 100 flags (up from 10), with states visible in extended register view.

  • Additional flag instructions:
      FC? nn: tests if flag nn is cleared
      FC?S nn: tests if flag nn is cleared, then sets it
      FS?C nn: tests if flag nn is set, then clears it
      TOGF nn: toggle flag nn

  • F? renamed to FS?
  • Flags 24 and 25 for error handling
  • Flag 41 for HP-41 compatibility
  • STFLAGS, RCFLAGS to store/recall groups of 32 flags
  • CFInd, SFInd clear/set indirection mode for flags

  • Additional comparison instructions:
      x<NN, x≤NN, x=NN, x≠NN, x≥NN, x>NN: compares x with Rnn defined in Y
      x<nn, x=nn, x>nn: compares x with Rnn

  • FILL RAN# now accepts a user-defined range

  • • Mathematical and physical constants (CODATA 2018-compliant)
  • • No change of program counter when ISG/DSE is executed on the keyboard
  • • Indirect register addressing ignores sign and fractional part of the argument
  • • In vintage mode, ISG, DSE, RND, RAND, and CLEAR ∑ are not shown and dont' work.

  • Sample programs:
      - "41-Extrema"
      - "41-Parabolic Interpolation"
      - "41-Infinite Nested Radicals"
      - "41-Large Factorials"
      - "41-Multi- and Hyperfactorials"
      - "41-Factorial Digits"
      - "41-Kaprekar Series"
      - "41-Golomb Sequence"
      - "41-Euler Numbers 1"
      - "41-Euler Numbers 2"
      - "41-Harmonic Numbers"
      - "41-Pell's Equation"
      - "41-Kepler's Equation"
      - "41-Easter Date"
      - "41-Equilateral Triangle Puzzle"
      - "41-Multivariate Gamma, Digamma"
      - "41-Loxodromics"
      - "41-Geodesic Distance"
      - "41-Square Root modulo m"
      - "41-Unrestricted Partitions"
      - "41-Permutations"
      - "Amortization" (update)
      - "TVM – Time Value of Money" (update)

  • Bug Fixes:
  • • ISG/DSE commands were susceptible to internal rounding effects
  • • Deleting a block of steps could result in wrong branch targets

2.0 – Nov 8, 2020

  • New:

  • 100 registers (up from 20)

  • New register view showing all 100 registers

  • Print program listing or program description, or email them as PDF file

  • Store/recall arithmetic between X and any stack register

  • • Define register arguments directly in the Extra Functions list

  • • New Extra Functions:
      STO<op>nn, RCL<op>nn: direct register arithmetic between x and register nn (0..99)
      STi<op>nn, RCi<op>nn: indirect register arithmetic between x and register nn (0..99)
      xi≷ nn: swap x with register defined in register nn (0..99)
      STO<op>N, RCL<op>N: direct stack arithmetic between x and stack register N
      STi<op>N, RCi<op>N: register arithmetic between x and register nn (0..99) defined in stack register N
      x≷ N: swap x with any stack register N
      xi≷ N: swap x with any register nn (0..99) defined in stack register N
      x<Rnn, x=Rnn, x>Rnn: compare x with any register nn (0..99)
      ISG nn, DSE nn: increment/decrement register nn (0..99) and skip if condition met
      ISG N, DSE N: increment/decrement stack register N and skip if condition met
      ISGi N, DSEi N: increment/decrement register nn (0..99) defined in stack register N and skip if condition met
      SND nn: play sound defined by value (0..99) in register nn (0..99)
      CLR ALL: clear all registers (R00..R99)
      CLR EXT: clear all extended registers (R20..R99)
      CLRGX: clear a block of registers with optional skipping
      REGCOPY: copy a block of registers
      REGSWAP: swap two blocks of registers
      REGS ALL: show all registers (R00..R99)
      SIGN: return -1, 0, or +1 if x is negative, positive, or zero
      PRIME?: set flag 0 if x is a prime number (x ≤ 4,294,967,295)
      ERF/ERFC: Gauss error function and complementary error function
      Bernoulli: returns xth Bernoulli number
      BesselJ: Bessel function of the 1st kind of order y of x
      BesselY: Bessel function of the 2nd kind of order y of x
  •   Zeta: return the Riemann zeta function ζ(x)
      ERROR nn: replaces the previous functions ERROR 1 and ERROR 2

  • Optional vintage features
      Send 19390104 to register 0 to toggle some features on and off:
      - New program step replaces the next step instead of being inserted
      - ISG, RND and CLEAR ∑ labels are hidden (but still functional)

  • • A program running longer than one minute will emit a short beep when executing the final GTO 00 command

  • • Tap f or g, then the PRGM/RUN switch to see a 12- or 24-hour clock

  • Improved accuracy in extreme cases of yx with positive, integer x.
      For example: 1.0000001^227 = 674530.4707, not 674530.4760

  • • Double-tapping "Continuous Memory" doesn't show the Info screen anymore.
      Use the info button instead.

  • • Call up "What's New" anytime from the Info screen

  • New sample programs:
      - "Amortization"
      - "Bell Numbers Advanced"
      - "Decimals of e"
      - "Decimals of Pi"
      - "Multi Curve Fitting"
      - "NPV and IRR"
      - "Square Roots & Integer Power
      - "TVM – Time Value of Money"

  • Bug Fixes:
  • • Fixed display issues when using the iPhone in "Zoomed" mode
  • • The RND function didn't work correctly in regions using a comma as decimal point
  • • Double- or triple-tapping the empty program listing could cause a crash
  • • Setting the haptic feedback level didn't check sufficiently for the correct code
  • • CLR ALL from RPN-32 was translated incorrectly
  • • Compatibility with iPhone 12

1.5 – Sep 24, 2020
  • New:
  • • More than 80 new functions added
  • • Much simplified inserting of Extra Functions:
      1. Triple-tap display in PRGM mode
      2. Double-tap desired function

  • Bug Fix:
  • • The thousand's separator setting was lost after restarting the app

1.0 – Sep 2, 2020
  • First public version.


RPN-25 CE is available here:




Looking for a manual?

(External Link)


Copyright © 2020. All rights reserved.
Apple and the Apple logo are trademarks of Apple Inc., registered in the U.S. and other countries. iPad is a trademark of Apple Inc.