RPN-25 CE — Extending the HP-25C


What's been added in RPN-25 CE

For its price ($195 in 1975, dropped to $145 when the HP-25C was released at $200), the HP-25 was a remarkable calculator. It offered a large set of scientific functions as well as programmability. Most of all, it was affordable, unlike the previous HP-65 and HP-67.

RPN-25 CE enhances the HP-25C in several ways:



MEMORY

HP-25C

RPN-25 CE
Registers 8, R0..R7 20, split into R0..R9 and R.0..R.9
Register Arithmetic

For STO operations only
RCL ∑+ only

For both STO and RCL operations.
• Includes double-register ∑+ (R7 and R4) working with stack registers X and Y, respectively.
• Also includes LASTx (use the GTO key as register address.)
Exchange X and Registers Not available Yes, directly or indirectly
Indirect Addressing Not available Yes, via register R.9 (see here)
     
FUNCTIONS    
GSB, RTN Not available Subroutine support (4 levels)
RND Not available Round X to displayed value
RAND Not available Create random number
DSE, ISG Not available Loop control using R.9
(see right column)
x! Not available Factorial (where x = any number except negative integers)
∑+, ∑– Handles n, ∑x, ∑y, ∑xy,∑x² Also stores ∑y² (in R8)
(see "Extra Functions" at right)
     
PROGRAMMING    
Program size 49 steps 99 steps
Insert step No Yes
Delete step No Yes, with DEL key
PRGM: current step
RUN: any range of steps
Auto-correcting branch targets No Yes, on inserting and deleting steps
Automatic LBL instructions No Turns NOPs targeted by GTO or GSB into LBL instructions
     
USER INTERFACE    
Prefix keys Active if pressed Active if pressed. Deactivated if pressed again. Indicators show state.
Register view Not available All registers shown on single screen including formatted display.
Run/Stop and single-step program without leaving register view.
Decimal Point,
Thousands separator

Fixed to decimal point
No thousands separator

Decimal point or comma
Separators optional
Command display

Not available

In program mode or while single-stepping, current command is shown as text below display
Current step display

Not available

Current program step number is shown below display
Program memory fill status

Not available

Red progress bar shows amount of program memory filled
Go to step 00

GTO 00, f PRGM (in RUN mode)

Same, plus: RTN, GTO.00 (works also in PRGM mode)
Pause length

1 second

1, 2, 5 seconds or ignore PAUSE instruction (in Settings.)
Any length up to a day using extra function PSE LEN.
End pause

Not available

By tapping any key, but allow number input while pausing.
Mantissa (MANT)
see note below

Not available

Temporarily displays all 10 digits of the mantissa of the number in the X-register.
Sounds

Not available

Beep, "calculation done", failure.
Haptic feedback

Natively

Set by sending the value 1939010X to R0 (where X = 0..3 = level)

Mantissa Note
As documented in this article, the mantissa function may also be enabled by a hardware hack.
CuVee Software advises against trying this on an iPhone.

Self-check
A self-check of RPN-25 CE may be performed by pressing STO ENTER.
All registers, the stack and the flags are cleared.



Stack Display

– Turn on by swiping display right
– Turn off by swiping display left or by tapping display

      Getting data into RPN-25 CE
       
      You can preset RPN-25's registers with data created externally without having to type them in.
      Simply prepare the data in text format in any app that can handle text, like Notes, Mail and many others.
       
      The data format looks like this:
      Rn or R.n value (where n = 0…9)
       
      Example:
To set R1 = 4.5, R6 = 6.28E-7, R.3 = 439, prepare your data like this:
      R1 4.5
R6 6.28e-7
R.3 439
      Select all of the text and copy/paste.
       
      Notes:
Upper-/lower-case is ignored.
One or more blanks or tabs may follow the register number.
M may be used in place of R.
R.n may also be written as R1n, e.g. R.3 is the same as R13.
The order of the registers is irrelevant.
Unlisted registers are left untouched.


      Extra Functions
       
      RND
      Rounds x according to the currently shown digits.
       
      RAND
      x ≤ 0: replaces X with an integer random number in the range 0…232–1.
x > 0: replaces X with an integer random number less than x, but no larger than 232–1.
       
      GTO, GSB, RTN
      GTO nn
Continue program execution at step nn.
GSB nn
Continue program execution at step nn, storing step nn+1 on a 4-level stack.
RTN
Continue program execution at latest step stored by GSB.
If no return address is available, RTN is equivalent to GTO 00.

Up to 4 return addresses may be pending.
Step arguments nn of GTO and GSB are automatically adjusted when inserting or deleting steps.
       
      DSE, ISG
      The functions DSE (Decrement and Skip if Equal or Less) and ISG (Decrement and Skip if Greater) provide looping control by counting a value up or down, skipping the next step when a predetermined limit value has been reached.

The loop control value must be stored in register R.9, using this format:

                      nnnnn.xxxyy

The integer part nnnnn (up to 5 digits) is the counter value being decremented or incremented.
The fractional part xxx (exactly 3 digits) is the limit value being compared to the counter value.
The fractional part yy (exactly 2 digits) determines the amount by which the counter is incremented or decremented.

DSE decrements nnnnn by yy. If the result is equal to xxx (or less than xxx), the next step is skipped.
ISG increments nnnnn by yy. If the result is greater than xxx, the next step is skipped.

Note that xxx defaults to 000, while yy defaults to 01.

The DSZ command (Decrement and Skip if Zero) found in other calculators may be emulated by simply storing the counter value n (1...99999) in register R.9.
       
 
 

 

  Extra Functions


Extra Functions are functions and operations not available on the original HP-25.

They may not be entered from the calculator's keyboard.

Instead, they are put directly into a program in PRGM mode:

 

1. Go to the step after which the function should be inserted.

2. Triple-tap the display.
 

3. Find the desired function.

4. Double-tap to insert it. Or tap Insert.


Alternatively, tap Replace to replace the current step.
 

The function is now part of the program.

NOTE: Functions requiring an argument, like F? n or c_STO n, use the value currently shown in RUN mode.


List of Functions


COMPARISONS
x>y  x>0  x≤y  x≤0
Executes the next step if the condition is true.
Otherwise the next step is ignored.
 

FLAGS
F? n
Executes the next step if flag n is set. n = 0..9.
Otherwise the next step is ignored.
To enter the command F? 7:
• In RUN mode enter the number 7.
• In PRGM mode select the F? n function.
• The function will appear as F? 7.
SF n
Sets flag n
To set flag 4:
• In RUN mode enter the number 4.
• In PRGM mode select the SF n function.
• The function will appear as SF 4.

Set flags appear as highlighted register numbers in Register View.
Note that F3 is automatically set when entering a number.
CF n
Clears flag n
To clear flag 1:
• In RUN mode enter the number 1.
• In PRGM mode select the CF n function.
• The function will appear as CF 1.
CFLAGS
Clears all flags F0…F9.
f REG or setting the power switch to OFF also clears all flags.
Note that flags F2 and F3 are automatically cleared on testing (F? 2, F? 3).

SYSTEM
BEEP
Notification sound
Recommended to signal that the program requires the user's attention.
DONE
Completion sound
Recommended to signal that a result is available.
OH-NO
Error sound
Recommended to signal an error or failure situation.
SEC
Returns in x the number of seconds since midnight.
 
ERROR 1
Halts program execution and displays Error
 
ERROR 2
Same as Error 1 with error sound
 

REGISTERS
STi
Store x indirectly in the register defined by the integer part of R.9.
Since R.9 is used as register address, looping through a range of registers is possible via the ISG and DSE commands.
The accepted range is 0..20 (where 20 = LASTx register.)
RCi
Recall indirectly to x the value in the register defined by the integer part of R.9.
Since R.9 is used as register address, looping through a range of registers is possible via the ISG and DSE commands.
The accepted range is 0..20 (where 20 = LASTx register.)
xi
Exchange x indirectly with the value in the register defined by the integer part of R.9.
The accepted range is 0..20 (where 20 = LASTx register.)
xnn
Exchange x with the value in register nn.
nn = 0..20 (where 20 = LASTx register.)
P≷S
Swap primary registers R0..R9 with secondary registers R.0..R.9.
 
REGS
Shows the Register View.
Note that you can run/stop or single-step a program in Register View.
(Tap the ? to see how.)

HYPERBOLICS
SINH  COSH  TANH
Calculates the hyperbolic sine, cosine, or tangent.
sinh 3.2 = 12.25, cosh 3.2 = 12.29, tanh 3.2 = 1.00
SINH-1  COSH-1  TANH-1
Calculates the inverse hyperbolic sine, cosine, or tangent.
sinh-1 51.777 = 4.64, cosh-1 51.777 = 4.64 (x≥1), tanh-1 0.777 = 1.04 (-1<x<1)

STATISTICS
L.R.
Linear regression. Computes y-intercept and slope for the linear function approximated by x and y values accumulated using ∑+. The value of the y-intercept is placed in the X-register; the value of the slope is placed in the Y-register.
sinh 3.2 = 12.25, cosh 3.2 = 12.29, tanh 3.2 = 1.00
ŷ
Linear estimate. Computes estimated value of y for a given value of x.
sinh-1 51.777 = 4.64, cosh-1 51.777 = 4.64 (x≥1), tanh-1 0.777 = 1.04 (-1<x<1)

Linear estimate. Computes estimated value of x for a given value of y.
Exchanges R0..R3 with RS0..RS3.
x̅,y̅
Computes means (averages) of x and y values accumulated using ∑+.
Exchanges R4..R9 with RS4..RS9.
x̅w,s
Computes weighted mean and standard deviation of x values with frequency y accumulated using ∑+.
 
r
Correlation coefficient. Computes "goodness of fit" between the x and y values accumulated using ∑+ and the linear function which they approximate.
 
sx,sy
Computes standard deviations of x and y values accumulated using ∑+.
 
Q
Computes area under the standard normal distribution curve to the left of x.
 
Q-1
Computes x, given the area under the standard normal distribution curve to the left of x.
 
SWAP∑
Swap statistical values with locations used on RPN-32, and vice versa.

RPN-32

RPN-25

Statistics
R.0 R3 n
R.1 R7 ∑x
R.2 R6 ∑x²
R.3 R4 ∑y
R.4 R8 ∑y²
R.5 R5 ∑xy
P(y,x)
Permutations of y objects taken x at a time.
P(7,5) = 2520
P(y,x) = y!/(y-x)!
For very large but close values of x and y, the function LN(x!) may prove useful.
C(y,x)
Combinations of y objects taken x at a time (binomial coefficient.).
C(7,5) = 21
C(y,x) = y!/(x!(y-x)!)

MISCELLANEOUS
∆%
Percent difference between x and base y.
%∑
Percent that x is of ∑x (R7).
%MARKUP
Percentage to add to cost price to make a gross profit of x%.
To make a profit of 30%, what is the percentage of markup?
Answer: 42.86%
x
Cube root of x.
x = any positive or negative real number
TIME
24-hr time (hours, minutes, secs, 1/1000 secs)
To measure program execution time in secs.ms:
TIME  CHS  STO.8 {execute program} TIME  RCL.8  H.MS+  EEX  4  ×
H.MS+
Adds hours, minutes, seconds, or degrees, minutes, seconds in Y-register to those in displayed X-register.
 
PSE LEN
Extended pause length. Sets pause length used by the PAUSE instruction to any value 0 < |x| ≤ 86,400 seconds. The value x = 0 restores the standard pause length defined in Settings.
Seconds remaining are shown in the status display.
If x < 0, the last 10 seconds are counted down with sound.
An extended pause in progress does not fade the PAUSE message.
The pause may be ended by pressing any key.
If ending the pause in a running program, the program stops.
Exceptions: number keys, decimal point, CHS, EEX. This allows inputting a number while pausing.
If the number input is followed by ENTER, a paused program will resume running.
LOGy
Logarithm of x to base y.
log7 5 = 0.8271
LN(x!)
Logarithm of x!, where 0 < x < 4.4673257•1097.
To divide 439 ! by 433 ! :
439 LN(x!) 433 LN(x!) - ex = 6.1965•1015
RAN#
Returns a random number 0 ≤ x < 1.
 
FILL RAN#
Fills registers R0..R.8 with random numbers r in the range -x < r < +x. If x = 0, then x = 1.
x = 40:
Registers will be filled with random numbers from -39.9999.. to +39.9999..
GCD
(Highest Common Factor). Finds the largest positive integer which divides both positive integers x and y.
GCD(51,119) = 17
LCM
(Least Common Multiple). Finds the smallest positive integer that both positivie integers x and y can divide.
LCM(51,119) = 357
QUAD/CUBE
Solves quadratic and cubic equations
Quadratic equation: ax² + bx + c = 0. Arguments: 0 in T, a in Z, b in Y, c in X
Returns: x,y = x₁,x₂ or u,v (if conjugate complex solution, u ± iv), z = discriminant
Cubic equation: ax³ + bx² + cx + d = 0. Arguments: a in T, b in Z, c in Y, d in X
Returns: x,y,z = x₁,x₂,x₃ or x₁,u,v (if type = 1)
t = type of roots (1: one real, two complex; 2: three real, at least two equal; 3: three real and distinct)
LIN EQ2
Solves system of linear equations in two unknowns:

ax + by = c
dx + ey = f
Input values:
a b c = R4 R5 R6
d e f = R1 R2 R3

Example:
7.32x - 9.08y = 3.14
12.39x + 7y = 0.05

Solutions: x = 0.14, y = -0.24, Det = z = 163.74
LIN EQ3
Solves system of linear equations in three unknowns:

a11x+a12y+a13z = b1
a21x+a22y+a23z = b2
a31x+a32y+a33z = b3
Input values:
a11 a12 a13 = R7  R8  R9
a21 a22 a23 = R4  R5  R6
a31 a32 a33 = R1  R2  R3
b1  b2  b3 = R.1 R.2 R.3

Example:
3.14x + 10.02y - 7z = 1
0.25x + 30.3y - 9.1z = 2
-3.5x + 27.4y + 8z = 3

Solutions:
x = 0.29, y = 0.11, z = 0.14, Det = t = 1052.86

UTILITIES
DECR
Decrements x by 1
Useful in tests like "IF condition = true THEN decrement x" since only one step is required
INCR
Increments x by 1
Useful in tests like "IF condition = true THEN increment x" since only one step is required
MIN
Compares x and y and puts the smaller value into X, the larger into Y
 
MAX
Compares x and y and puts the larger value into X, the smaller into Y
 
ODD
Returns 1 if INT(x) is odd, 0 otherwise
 
DIV
Returns in X the integer value of y/x. The sign is the same as x.
 
MOD
Returns in X the remainder of y/x, in Y the remainder of y/x
 
RATIO
Converts x to a close rational y/x, with numerator and denominator limited to y (1E6 if y = 0 or non-integer).
y = 1000, x = π: RATIO = 355/113
y = 1E5, x = e: RATIO = 49171/18089
EXP/MANT
Returns in X the mantissa, in Y the exponent of x.
 
CHG MAG
Changes the magnitude of y by x: if y is positive, then x is added, otherwise subtracted from y.
y = 5, x = 3: CHG MAG = 8
y = -5, x = 3: CHG MAG = -8
CHOP
Returns 0 if the absolute value of x is less than 5E-10. Useful for eliminating floating-point representation errors.
 

STACK OPERATIONS
R↑
Rolls stack up
 
DELy
Removes y and lowers the part of the stack above X
 
FETCHz
Brings z to X, keeping the other operands in the same order.
 
xy≷zt
Swap x,y with z,t.
 
x≷t
Swaps x and t (reverse contents of Y, Z, T)
 
y≷z
Swaps y and z
 
z≷t
Swaps z and t
 
x≷t
Swap x and t
 
x≷z
Swaps x and z (reverse contents of X, Y, Z)
 
REV STK
Reverses stack order
 
PUSH STK
Saves entire stack on a 4-level "stack of stacks"
 
POP STK
Copies the latest PUSHed stack to the regular stack and drops the "stack of stacks".
The oldest entry is copied down to level 3 (like T to Z on the regular stack.)
If the "stack of stack" is empty, POP STK clears the regular stack.
CLEAR REG removes all pushed stacks.

COMPLEX NUMBERS
c_+
Complex add z+it to x+iy
 
c_-
Complex subtract x+iy from z+it
 
c_×
Complex multiply x+iy by z+it
 
c_÷
Complex divide z+it by x+iy
 
c_ENTER
Copy x+iy to z+it
 
c_CHS
Complex change sign of x+iy
 
c_x≷y
Exchange x+iy with z+it
 
c_R↓
Complex roll down
 
c_STO n
Complex store x+iy in Rn (n = 0..9)
To enter the command c_STO 2:
• In RUN mode enter the number 2.
• In PRGM mode select the c_STO n function.
• The function will appear as c_STO 2.
c_RCL n
Complex recall x+iy from Rn (n = 0..9)
To enter the command c_RCL 5:
• In RUN mode enter the number 5.
• In PRGM mode select the c_RCL n function.
• The function will appear as c_RCL 5.
c_LASTx
Complex retrieve x+iy from LastX
 
c_ABS
Complex absolute value of x+iy
|3+4i| = 5.00
c_RND
Complex round to display x+iy
 
c_LN
Complex ln(x+iy)
ln(i) = 1.57i
c_ex
Complex ex+iy
e1.57i = 1.00i
c_LOG
Complex log(x+iy)
log(i) = 0.6822i = π/(2·ln(10)i
c_10x
Complex 10x+iy

101.57i = -0.89 -0.46i

c_LOGz
Complex log(x+iy) to complex base (z+it)
log(1+i)(1.49+4.13i) = 2.00-1.00i
c_yx
Complex (z+it)x+iy (where z+it ≠ 0)
(1+i)2 - i = 1.49+4.13i
c_1/x
Complex reciprocal of (x+iy)
1/(2+3i) = 0.15-0.23i
c_√x
Complex square root of (x+iy)
√(7+6i) = ±(2.85+1.05i)
c_x2
Complex square of (x+iy)
√(7-2i) = 45.00-28.00i
c_x!
Complex factorial of (x+iy) = Γ(x+1 + iy)
(7-2i)! = -2368.80+3064.87i
Note: (7-2i)! = Γ(7+1-2i) = Γ(8-2i)
c_SIN, c_COS, c_TAN
Complex sine, cosine, tangent of (x+iy). All angles in radians.
sin(2+3i) = 9.15-4.17i
cos(2+3i) = -4.19-9.11i
tan(2+3i) = -0.004+1.003i
c_SIN-1, c_COS-1, c_TAN-1
Complex arc sine, arc cosine, arc tangent of (x+iy)
sin-1(5+8i) = 0.56-2.94i
cos-1(5+8i) = 1.01-2.94i
tan-1(5+8i) = 1.51+0.09i
c_SINH, c_COSH, c_TANH
Complex hyperbolic sine, cosine, tangent of (x+iy)
sinh(3-2i) =-4.17-9.15i
cosh(1+2i) = -0.64+1.07i
tanh(1+2i) = 1.17-0.24i
c_SINH-1, c_COSH-1, c_TANH-1
Complex inverse hyperbolic sine, cosine, tangent of (x+iy)
sinh-1(8-5i) = 2.94-0.56i
cosh-1(5+8i) = 2.94+1.01i
tanh-1(8-5i) = 0.09-1.51i

CONVERSIONS
→RAD    →DEG
Converts decimal degrees to radians, and vice versa
 
→in    →mm
Converts millimeters to inches, and vice versa
 
→ft.in    →cm
Converts centimeters to feet and inches, and vice versa. Use 2 digits to indicate inches after the decimal point.
164 cm = 5.0457 = 5'4.57"
5'5" = 5.05' = 165.10 cm
→ft    →m
Converts meters to feet, and vice versa
 
→ac    →m2
Converts square meters to acres, and vice versa
 
→°F    →°C
Converts degrees Celsius to degrees Fahrenheit, and vice versa
0°C = 32°F, 100°C = 212°F, 37°C = 98.6°F
-460°F = -273.33°C, -40°F = -40°C
→oz    →g
Converts grams to ounces, and vice versa
 
→lbm    →kg
Converts kilograms to pounds (mass), and vice versa
 
→gal    →ltr
Converts liters to gallons, and vice versa
20 ltr = 5.28 gal
61.55 gal = 232.99 ltr
→cup    →dl
Converts deciliters to cups (US), and vice versa
2 dl = 0.85 cups
1.5 cups = 3.55 dl
→tbs    →g (H2O)
Converts grams (water) to tablespoons, and vice versa
15 g = 1.01 tbs
6 tbs = 88.72 g
→bbl    →liter
Converts liters to barrels (US, oil), and vice versa
500 ltr = 3.14 bbl
1 bbl = 158.99 ltr
gas US    gas UK
Express miles per gallon as liters per 100 km, and vice versa. Select US or UK units.
8.4 ltr per 100 km ⇄ 28.00 mpg (US), 28 ltr per 100 km ⇄ 8.4 mpg (US)
8.4 ltr per 100 km ⇄ 33.63 mpg (UK), 33.63 ltr per 100 km ⇄ 8.4 mpg (UK)
 
 


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.