Extensions — Creating the no-holds-barred HP-67/97


With RPN-67/97 Pro's setting "Enhanced Calculator" ("Enhancements" on RPN-67 SD) set
to "Med" or "Max", a number of powerful extensions are added to the basic calculator.


The "secret" NOP command

There is one additional command that even works in vintage mode:
If – in W/PRGM mode on a real HP-67 – you press GTO.2, then keys A and D simultaneously, the code 32 24 is entered. This command doesn't do anything, but executes in a mere 7 ms. It's therefore a perfect substitution for the missing NOP command.

On RPN-67, you simply press g (i) to enter the command.
On RPN-97, press EXT 0 (you will have to exit vintage mode temporarily). The keycode is 71-61.


Program Editing


Deleting a block of steps in program memory
You can delete a range of program steps in a single operation.
  1. Enter the first and the last step to delete in X and Y (in any order).
  2. Without leaving RUN mode, execute h DEL (f DEL on RPN-97)
  3. Confirm or cancel the operation.

On RPN-97 only, you can also delete all steps from any step to the end of the program:
  1. Address the first step to delete.
  2. In any mode, execute EXT DEL
  3. Confirm or cancel the operation.


New Functions


Most new functions may be accessed by executing OP (RPN-67: g OP, RPN-97: EXT OP).
Some are mapped to existing keys and show up after tapping g or h (RPN-97: EXT).
Almost all extended functions are programmable.

 

New Register Features

RPN-67/97 Pro features improved register arithmetic functions and adds one hundred storage registers.

 

More Labels

With 100 additional labels at your disposal, you'll never run out of labels in your programs again.


 

Toggle Flag Commands

RPN-67/97 adds handy toggle commands to the flag operations.
All commands are invoked by the prefix key DSP.
They are available to the regular flags F0…F3, as well as to the extended flags F4…F9.
  RPN-67   RPN-97   Description
  DSP h SF   DSP f STF   Toggle flag, then test if set
  DSP h CF   DSP f CLF   Toggle flag, then test if cleared
  DSP h F?   DSP f F?   Toggle flag

 

 

 

 

 

 

 

  Constants and Conversions


To use a constant or conversion: tap it, then tap "Select".
Or simply double-tap the key.

SI units are used, except where not applicable.


Physical constants reflect CODATA internationally recommended 2018 values.

Unit conversions follow a simple rule:
Convert TO SI unit Get conversion value, then multiply.
Convert FROM SI unit Get conversion value, then divide.

Examples

Convert 5 nmi (not SI) into meters (SI): 5 CC nmi × = 9260 [m]

Convert 2.5 kg (SI) into pounds (not SI): 2.5 CC   lb   ÷ = 5.51 [lbs]

Convert 1.2 litres (not SI) into cups (not SI): 1.2 CC   L   × CC cup ÷ = 5.07 [cups]

 

SI Base Units
Base Quantity Name Symbol
Length meter m
Mass kilogram kg
Time second s
Electric current ampere A
Thermodynamic temperature kelvin K
Amount of substance mole mol
Luminous intensity Candela cd

 

 
 

 

  Extended Operations and Functions

To use an operation: tap it, then tap "Select". Or simply double-tap the operation.

All operations, with the exception of NUM CPRS, are programmable.


If "Cplx" appears in the top-right corner, the function can handle complex arguments.

00 NOP No operation. Useful in testing and debugging programs. For an alternative, see note at the top about the "secret" NOP command.
01 CPX MODE Set or clear complex mode. Get complex mode status.

x = 0: clear complex mode
x = 1: set complex mode

x = -1: return complex mode
           0 = cleared
           1 = set
          -1 = CPLX RES showing
CPLX RES lights up whenever an operation results in a complex result, e.g. -1.5π. The imaginary part can then be found in register Y.
02 BEEP Sounds a short tone.  
03 ERROR Stops program and displays "Error" message.  
04 MAX STEPS Sets maximum number of programs steps according to x: 1 = 224, 2 = 448, 3 = 999.
Returns current setting for any other value of x, e.g. 0.
Same as "Number of Program Steps" in settings.
05 CSGN Generalized sign of x (-1 if x < 0, 0 if x = 0, 1 if x > 0). CSGN(5.3) = 1, CSGN(-4) = -1, CSGN(0) = 0
06 DECR Decrements x by 1. Useful when testing flags and conditions. DECR(0) = -1
07 INCR Increments x by 1. Useful when testing flags and conditions. INCR(5.3) = 6.3
08 CHG MAG Change magnitude of y by x: if y is positive, then add x, otherwise subtract x. y = 5, x = 3: CHG MAG = 8
y = -5, x = 3: CHG MAG = -8
09 ODD Returns 1 if integer part of x is odd, 0 otherwise. ODD(2) = 0, ODD(-5.3) = 1
10 FLOOR Returns the greatest integer less than or equal to x. FLOOR(5.3) = 5, FLOOR(-5.3) = -6
11 CEIL Returns the smallest integer larger than or equal to x. CEIL(5.3) = 6, CEIL(-5.3) = -5
12 MIN Returns the lesser of x and y in X, the greater in Y.
In complex mode, compares absolute values of x+jy and z+jt.
x = 7, y = 2. MIN: x = 2, y = 7
13 MAX Returns the greater of x and y in X, the lesser in Y.
In complex mode, compares absolute values of x+jy and z+jt.
x = 7, y = 2. MAX: x = 7, y = 2
14 CLIP Returns x clipped (limited) to between y and z. x = -3, y = 10: CLIP(-20) = -3, CLIP(20) = 10, CLIP(3.14) = 3.14
15 CHOP Returns 0 if absolute value of x is less than 5E-10. Useful for eliminating floating-point representation errors.
For example: 7.005 + 1 - 8.005 = -1.78E-15 instead of 0.
CHOP(1/12!) = 2.09E-9, CHOP(1/13!) = 0
16 RESCALE Returns x rescaled to run from 0 to 1 over the range y to z. y = 6, z = 22: RESCALE(6) = 0, RESCALE(22) = 1, RESCALE(14) = 0.5
17 EXP/MANT Returns in X the mantissa, in Y the exponent of x. EXP/MANT(325 EEX 5) = 3.25 (in X), 7 (in Y)
18 MOD Modulo function: returns the remainder of y divided by x.
The result always has the same sign as x.
MOD(5.6,1.2) = 0.8, MOD(-5.6,1.2) = 0.4
19 GCD Greatest common divisor of positive integers x and y. GCD(164,88) = 4, GCD(328,3567) = 41
20 LCM Least common multiplier of positive integers x and y. LCM(24,124) = 744, LCM(328,3567) = 28536
21 DIV For two numbers x and y, returns the integer part of y/x in x, the remainder in y. DIV( 5.6, 1.2) = ( 4, 0.8)
DIV(-5.6, 1.2) = (-4,-0.8)
DIV( 5.6,-1.2) = (-4, 0.8)
DIV(-5.6,-1.2) = ( 4,-0.8)
22 %TOT Returns the % of y that is represented by x. y = 7, x = 7: %TOT = 100, y = 15, x = 12: %TOT = 80
23 ATAN2 Calculates atan(y/x), with the quadrant of point (x,y) preserved y = 1, x = 1: ATAN2 = 45°, y = -1, x = -1: ATAN2 = -135°
24 RATIO Convert 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
25 CB ROOT Returns the cube root of x. 27 = 3, ∛ = -1.46
26 CONJUG Returns the conjugate of complex number x + iy.
May be used to change the sign of y directly.
 
27 LOGy Returns the base y logarithm of x. LOG2(256) = 8; LOGπ(√3) = 0.47986
Complex: LOG(1+i)(1.49+4.13i) = 2.00-1.00i
28 QUAD EQ Solves the quadratic equation ax2 + bx + c = 0. Arguments: a in Z, b in Y, c in X. Solve x2 - 2x + 2 = 0: x = 1 ± 1i (CPLX indicator appears)
29 CUBE EQ Solves the cubic equation ax3 + bx2 + cx + d = 0.
Arguments: a in T, b in Z, c in Y, d in X.
On return: t = type of roots (1: one real, two complex; 2: three real, at least two equal; 3: three real and distinct; 0: not a cubic equation)
Solve x3 - 4x2 + 8x - 8 = 0:
x₁ = 2, x₂ = 1 + √3i, x₃ = 1 - √3i,
root type is 1 (CPLX indicator appears)
30 LIN EQ 2 Solve linear equation in two unknowns:
ax + by = c
dx + ey = f
Inputs:
a,b,c = R4,R5,R6
d,e,f = R1,R2,R3
Solve:
7.32x - 9.08y = 3.14
12.39x + 7y = 0.05

Solutions:
x = 0.14, y = -0.24, Det = z = 163.74
31 LIN EQ 3 Solve linear equation in three unknowns:
a11x+a12y+a13z = b1
a21x+a22y+a23z = b2
a31x+a32y+a33z = b3
Inputs:
a11,a12,a13 = R7,R8,R9
a21,a22,a23 = R4,R5,R6
a31,a32,a33 = R1,R2,R3
b1,b2,b3 = RA,RB,RC
Solve:
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
32 GAMMA Returns the value of the Gamma function Γ(x). Works in complex mode. Γ(10) = 362880 (= 9!). Γ(-2.33) = -1.32.
Γ(3+1.2i) = 0.622 + 1.386i
33 EULER Φ Returns number of positive integers not exceeding x that have no common divisors with x. Φ(100) = 40, Φ(101) = 100
34 FIBONACCI Returns generalized Fibonacci numbers Fib(x) for x integer, real or complex.
If x is a positive integer, the xth Fibonacci number is returned.
Fib(10) = 55, Fib(-π) = 1.9293
Fib(480.16) = 9.95 × 1099
Fib(3+1.2i) = 3.507 - 0.216i
35 HARM NUM Returns the xth Harmonic number for any real and positive x. H(0) = 0, H(3) = 11/6 = 1.8333, H(π) = 1.8727
36 BesselJ Calculates the Bessel function of the first kind Jy(x). Order y = positive integer. J2(1) = 0.1149, J5(π) = 0.05214
37 BesselY Calculates the Bessel function of the second kind Yy(x). Order y = positive integer; x > 0. Y2(1) = -1.6507, Y5(π) = -1.6235
38 Py,x Permutations of y objects taken x at a time. P7,5 = 2520, P500,37 = 1.8569 × 1099
39 Cy,x Combinations of y objects taken x at at time (Binomial Coefficient) P7,5 = 21, C500,37 = 1.3491 × 1056
40 LIN REG Calculates the linear regression y = ax + b. x,y pairs are entered using the ∑+ key.
Results: x = a, y = b, z = correlation coefficient, t = covariance.
Use OP CLR ∑ to clear statistics registers
41 ŷ,r LIN REG: return in X the linear estimate for y, given an x value in X.
Returns correlation coefficient in Y.
 
42 x̂,r LIN REG: return in X the linear estimate for x, given a y value in X.
Returns correlation coefficient in Y.
 
43 NORM DIST Normal Distribution (Gaussian Probability Function) with mean µ = 0 and standard deviation σ = 1. Returns probability density function φ(x) in X, cumulative distribution function Φ(x) in Y. φ(2.22) = 0.03394, Φ(2.22) = 0.98679
44 BIN DIST Binomial Distribution f(x).
Inputs: z = n (number of trials), y = p (success probability in each trial), x = argument.
Galton box with 8 layers (n = 8, p = 50%, nine bins numbered 0..8). Probability that ball ends in central bin (x = 4): f(4) = 70/256 = 0.27344
45 NBIN DIST Negative Binomial Distribution.
Inputs: z = p (success probability in each experiment), y = r (number of failures until experiment is stopped).
To verify the example "Selling candy" at the bottom of this Wiki page, enter p = 0.4, r = 5, x = n-5.
46 BVAR DIST Bivariate Normal Distribution f(x,y).
Inputs: µ1 ➞ R.91, µ2 ➞ R.92, σ1 ➞ R.93, σ2 ➞ R.94, ρ ➞ R.95
µ1 = -1, µ2 = 1, σ1 = 1.5, σ2 = 0.5, ρ = 1.7
f(1,2) = 0.04004
47 POISSON Poisson Distribution f(x).
Inputs: y = λ (expected value of x; must be larger than 0). x = positive integer.
λ = 2.8: f(7) = 0.01628
48 CHI-SQ Evaluates χ² for a range of data pairs for goodness of fit. Input values:
R.y through R.z = range of observed frequencies, R.x = start of corresponding range of expected frequencies
Oi: 9.6, 46.75, 51.85, 54.4, 8.25, 9.15
Ei: 8, 50, 47, 56, 5, 14
χ² = 4.8444
49 TPAIRED T Statistics: returns t for paired observations. Data pairs are entered using the ∑+ key. Use OP CLR ∑ to clear statistics registers
50 MEAN GRP Calculates weighted mean (in X) and standard deviation s (in Y) of grouped data.
Input: Use ∑+ with value in X, weight in Y.
Use OP CLR ∑ to clear statistics registers
51 SKW/KURT Skewness γ1, Excess Kurtosis γ2 and Moments mi for grouped and ungrouped data.
Input: Use ∑+ with value in X, weight in Y (set to 1 if ungrouped data).
Returns: X = γ1, Y = γ2, Z = m1 (mean), T = m2, RA = m3, RB = m4
Use OP CLR ∑ to clear statistics registers
52 ERF,ERFC Returns the value of the error function erf(x) in X, the value of the complementary error function erfc(x) in Y.
Note that Φ(x) = ½ + ½ erf(x/√2) [see cumulative distribution function PROB].
erf(3) = 0.99998
erfc(3) = 2.20905E-5 = 1 - erf(3)
53 NORM Normalizes the vector [R1 R2 R3]. NORM([3 1 2]) = [0.802 0.267 0.535]
54 ANGLE Returns the angle between vectors [R1 R2 R3] and [R4 R5 R6]. ANGLE([2 -3 4],[5 2 1]) = 74.26°
55 DOT Returns the dot product of vectors [R1 R2 R3] and [R4 R5 R6]. DOT([2 -3 4],[5 2 1]) = 8
56 CROSS Returns the cross product of vectors [R1 R2 R3] and [R4 R5 R6] in [X Y Z]. CROSS([2 -3 4],[5 2 1]) = [11 -18 -19]
57 STO REGS Store primary registers R0...R9 in extended registers starting at R.x (x = 0...99).  
58 RCL REGS Load primary registers R0...R9 from extended registers starting at R.x (x = 0...99).  
59 XCH REGS Exchange primary registers R0...R9 with extended registers starting at R.x (x = 0...99).  
60 MAT SET Set all elements of 3x3 matrix [R1..R9] to x. Use with MAT ADD to add a value to all elements of matrix [R.91...R.99].
61 MAT + Add all elements of 3x3 matrix [R.91..R.99] to [R1..R9].  
62 MAT × Multiply all elements of 3x3 matrix [R1..R9] by elements of matrix [R.91..R.99].  
63 MAT ÷ Divide all elements of 3x3 matrix [R1..R9] by elements of matrix [R.91..R.99].  
64 MAT EQU Return 1 if 3x3 matrix [R1..R9] equals matrix [R.91..R.99], return otherwise.  
65 MAT MUL Replaces 3x3 matrix [R1...R9] with [R1...R9] • [R.91...R.99]. ({3,4,5},{4,5,6},{5,6,7}) •
({3,4,5},{4,5,6},{5,6,7}) =
({50,62,74},{62,77,92},{74,92,110})
66 MAT T Transposes the 3x3 matrix [R1...R9].
Row1: R1...R3, row2: R4...R6, row3: R7...R9
T({3,4,5},{4,5,6},{5,6,7}) = {3,4,5},{4,5,6},{5,6,7}
67 MAT DET Returns the determinant of the 3x3 matrix [R1...R9].
Row1: R1...R3, row2: R4...R6, row3: R7...R9
DET({3,4,5},{4,5,6},{5,6,7}) = 0
Area of triangle with vertices (0,0),(4,0),(4,3):
DET({0,0,1},{4,0,1},{4,3,1}) / 2 = 6.00
68 MAT INV Inverts the 3x3 matrix [R1...R9].
Row1: R1...R3, row2: R4...R6, row3: R7...R9
INV({3,4,5},{4,5,6},{5,6,7}) = Error
(Matrix is singular.)
69 MAT EIG Returns in x,y,z the Eigenvalues of the 3x3 matrix [R1...R9].
If t = 1, two Eigenvalues are complex: y + iz, y - iz.
CHOP is applied automatically to the results.
Row1: R1...R3, row2: R4...R6, row3: R7...R9
EIG({3,4,5},{4,5,6},{5,6,7}) = {15.3899,-0.3899,0}
70 MAT STO Stores the 3x3 matrix [R1...R9] at extended registers [R.91...R.99].  
71 MAT RCL Retrieves the 3x3 matrix [R1...R9] from extended registers [R.91...R.99].  
72 x̂,s EXT Returns in X the mean and in Y the standard deviation of all numbers in extended registers R.x..R.y.  
73 CHOP EXT Change absolute values less than 5E-10 in extended registers R.x..R.y to 0.  
74 COPY EXT Copies extended registers range R.y...R.z to R.x.  
75 FILL EXT Fills extended registers range R.y...R.z with x.  
76 FIND EXT If flag 9 is cleared:
Returns in x the first register number containing x in extended registers range R.y...R.z (-1 if not found). Returns in y the number of occurrences of x in the range.
If flag 9 is set:
Returns in x the first register number not containing x in extended registers range R.y...R.z (-1 if all registers contain x). Returns in y the number of occurrences of values different from x in the range.
Check if registers 40..59 contain only zeros:
40 ENTER 59 ENTER 0 SF 9 FIND EXT
x = -1, y = 0: answer is YES
x = 44, y = 3: answer is NO
(first diff. value at R.44, 2 more in range)
77 MIN EXT Returns in x the smallest value in extended registers range R.x...R.y, returns in y the register number.  
78 MAX EXT Returns in x the largest value in extended registers range R.x...R.y, returns in y the register number.  
79 PRT EXT Prints the values in extended registers range R.x...R.y on paper tape. If the first register number is a multiple of 10, then registers are printed in groups of 10, separated by a blank line.
80 RAN# EXT Fills extended registers range R.x...R.y with random numbers between 0 and 1.  
81 RDUP EXT Removes duplicate values in extended registers range R.x...R.y. Returns in x,y the range containing all unique values.  
82 REV EXT Reverses the order of values in extended registers range R.x...R.y.  
83 SORT EXT Sorts the values in extended register range R.x...R.y in ascending order. If z = -1, sorts in descending order.  
84 SUM EXT Returns the sum of all values in extended registers range R.x...R.y.  
85 PLOT Prints a "+" at position x on paper tape (x = 0...20). Prints empty line if x is out of range.  
86 PLOTC Prints up to four characters on paper tape, starting at position x (x = 0...20). Characters are stored as decimal ASCII codes (reduced by 32) in the fractional part of x.
To easily create the argument value, use the built-in TEXT Helper utility (see below).
Print "Plot" at position 9: x = 9.48767984
("P" = ASCII 80, minus 32 = 48, "l" = ASCII 108, minus 32 = 76, etc.)
87 TEXT Print up to 21 characters stored in extended registers R.x...R.x+6. Format: d.aaabbbccc, 0.aaabbbccc, 0.aaabbbccc etc., where aaa, bbb, ccc = decimal ASCII codes (0 ends string). Text alignment: left if d < 0, center if d = 0, right if d > 0. d must be single-digit.
To easily create the required values, use the built-in TEXT Helper utility (see below).

To print text and a result on the same line, see Extra Function 25 (below).
To print "RPN-67 for iPad" centered, store these values in registers 90...95: 0.082080078, 0.045054055, 0.032102111, 0.114032105, 0.080097100, 0. Set x = 90, execute TEXT. Change the integer part of R.90 for different alignments.
88 PRT FRAC Prints the fractional part of x as an integer. The number of digits is defined by the DSP setting. Leading zeros are added if necessary. The sign of x is preserved.
Ignored if display mode is not FIX, or if the absoulute value of x is 1E10 or larger. Setting DSP 0 results in an empty line.
PRT FRAC(3.1416) = 1416 (DSP 4)
PRT FRAC(445566.789) = 007890 (DSP 6)
PRT FRAC(445566.789) = 8 (DSP 1)
PRT FRAC(-0.000236) = -00024 (DSP 5)
89 PRT PWR Turns printer power OFF or ON according to x.
 0: turn power OFF
 1: turn power ON
-1: turn power ON and show printer (RPN-67 Pro and SD)

Returns current status if x is not 0 or ±1.
x =  0: turn printer power OFF
x = -1: turn printer ON and show it
90 PRT MODE Sets printer mode according to x = m.csdf:
m: 1 = MAN, 2 = TRACE, 3 = NORM.
    If m is negative, negative results are printed in red.
c: 0..9 = color (see command SYS/INFO below)
s: printer refresh control: (ignored on RPN-67 SD)
    0 = normal
    1 = no printer updates until program has stopped running
d: don't print decimal point if last in string
    0 = normal
    1 = trailing decimal point is suppressed
f: dot-matrix font in vintage mode
    0 = off
    1 = on

Note that dot-matrix font may also be set or reset in Settings.

Returns current mode for illegal values of m.csdf, e.g. 0.
Set printer to MAN mode, print in blue, negative results in red:
-1.2    PRT MODE

To toggle negative-red printing:
0    PRT MODE    CHS    PRT MODE

To turn on DP suppression (if off):
0    PRT MODE    0.001    CHG MAG    PRT MODE

To turn off DP suppression (if on):
0    PRT MODE    -0.001    CHG MAG    PRT MODE

To turn vintage mode dot-matrix font on (if off):
0    PRT MODE    0.0001    CHG MAG    PRT MODE
91 DSP MODE Sets display mode according to x = m.ds:
m: 1 = FIX, 2 = SCI, 3 = ENG. If m = -1, don't show thousands separators.
d: number of digits
s: integer/fractional part separating character ("decimal point"):
    0 = auto (according to region defined for the device)
    1 = "." (1000's separators changed to "," if necessary)
    2 = "," (1000's separators changed to "." if necessary)

Returns current mode for illegal values of m.ds, e.g. 0.
To toggle thousands separators display only:
FIX    0    DSP MODE    CHS    DSP MODE
92 TRIG MODE Sets trigonometric mode according to x: 1 = DEG, 2 = RAD, 3 = GRD.
Returns current trigonometric mode for any other value of x, e.g. 0.
 
93 CLR F4-9 Clears flags 4 through 9.
To clear all flags, use extended function CLR Flags (#–2).
 
94 CLR ∑ Clears the statistics registers.  
95 CLR TAPE Inserts a new roll of paper..  
96 SOLAR Returns sunrise (in X), sunset (in Y), sun transit (noon) (in Z), and altitude of the sun (in T) for a given location, date and time.
Inputs:
R0 = year (-2000 to 6000), R1 = month, R2 = day,
R3 = hour (24hr-format), R4 = minutes, R5 = seconds, (for altitude)
R6 = time zone (negative if west),
R7 = longitude (decimal degrees), R8 = latitude (decimal degrees)

Note: SOLAR accepts additional parameters and returns much more information – see box below.

Get sun position data for Salem, OR, on Nov 30, 2013, 12 a.m.
Longitude is 123° 2' W, latitude is 44° 56' N,. Time zone is UTC minus 8.
f CLREG  2013  STO 0  11  STO 1  30  STO 2
12  STO 3 -8  STO 6  -123.02  →H  STO 7
44.56  →H  STO 8  OP SOLAR

x = 7.4855 = 7:29:08 (sunrise)
y = 16.5489 = 16:32:56 (sunset)
z = 12.0161 = 12:00:58 (noon)
t = 23.3026° = 23°18'09" (altitude at 12 a.m.)

97 SYS/INFO

Sets or returns system settings, depending on the value x. Accepted values are:
-1: Get current printer color
0...9: Set printer color to x
10: Prints the locations of all labels in the current program, as well as the status of flags F0...F9. Returns in x the number of unused labels.
11: Same as 10 with printout suppressed.
20: Prints breakpoints information. Returns in x the number of stored breakpoints.
21: Same as 20 with printout suppressed.
30: Prints and returns in x the number of free program steps.
31: Same as 30 with printout suppressed.
40: Turn large digits off. (RPN-67 SD: Normal display mode)
41: Turn large digits on. (RPN-67 SD: High-contrast display mode)
80: Returns geo data. X: latitude, Y: longitude, Z: altitude (in meters), T: current system time zone (in hours, including DST)
If supported by the device, R.09 holds the compass heading (in degrees).
If flag F9 is set, geo data is invalid or not ready yet. You can let your program repeat the command until F9 is cleared.
90: Prints and returns in x the battery level (in %).
91: Same as 90 with printout suppressed.
98: Prints and returns in x the version number of RPN-67/97. The exponent shows the calculator type (67 or 97.) Tip: use EXP/MANT to separate the values.
99: Same as 98 with printout suppressed.
100: Turn turbo mode off.
101: Turn turbo mode 1 on. This will suppress display and register updates while the program is running. Very useful for expediting time-consuming calculations.
A red flash symbol in the display indicates that turbo mode is enabled. It turns green while the program is running. Output is not suppressed for printing or while pausing. Turbo mode ends automatically when program execution is stopped.
102: Turn turbo mode 2 on. Same as mode 1, but turbo mode does not end automatically when program execution is stopped. It must be turned off by issuing SYS/INFO command 100, or by tapping RTN when the program is not running (i.e. the flash symbol is shown in red.)
(Note that turbo mode is ignored on RPN-67 SD, as it serves no purpose on the iPhone.)


Printer colors:
0 = black,  1 = gray
2 = blue,   3 = light blue
4 = green,  5 = light green
6 = red,    7 = light red
8 = purple, 9 = light purple
98 NUM CPRS x = 0: Uncompress memory by storing numbers in one step per digit.
x = 1: Compress program memory by storing numbers in a single step.
This command is not programmable.
Example:
In PRGM mode, go to step 10 and enter 1 2 3.
Step 11 now contains 1, step 12 contains 2, step 13 contains 3.

In RUN mode, enter 1 and execute NUM CPRS.
Step 11 now contains the entire number 123.
99 EXEC FN Execute currently defined extra function.
Long-press to see available functions.
See description below.
To execute function #300:
300 STO FN
OP EXEC FN
 
 

 

  Execute Extra Function


Extra functions are accessed indirectly by storing their function number first, then executing EXEC FN.

To store the function number: STO FN (= STO EEX)

The function number may be retrieved anytime: RCL FN

Non-existent functions are ignored.

Long-press the key EXEC FN to see the available functions:
  Tap the info button to get additional information about a function.
To dismiss the info, tap the info text, or any function.

Double-tap a function (or tap "Select" after single-tapping it) to:
• Immediately execute the function (in RUN mode)
OR
Store the function in program memory (in W/PRGM mode)

The function is stored as three steps. For example:
001         ---     (Compressed function number)
002       33 43     STO FN
003    32 44 99     EXEC FN

Since the function number is never cleared automatically, EXEC FN
does not have to immediately follow STO FN.

Tap "Cancel" to return to the Operations screen without changes.


List of Functions

NOTE: Examples assume that the function number has already been stored using STO FN.
To execute a function in interactive mode, long-press the EXEC FN key, then double-tap the function.
If the desired function number is already stored (as shown in the top-left corner of the Operations screen),
there's no need to open the list of functions. Simply double-tap the EXEC FN key.
FN Utilities Examples
1 Sound
Plays a short alert sound, defined by x (0..19).
Values outside this range will produce the standard beep sound.
x = 3 produces a series of three beeps.
x = 13 emits the sound used in "Merge Sound Control" (see next command)
x = 15 creates a pleasing sequence of piano tones.
–1 Merge Sound Control
When being prompted acoustically by a program to merge a card, this value specifies how many times the sound should be played. The default value is 3 times, but you can change this value using Merge Sound Control with the argument:

x = number of times to play the sound (0 for no sound)

Notes:
Merging a card on a real HP-67/97 could be automated by placing the card into the slot without pushing it in. A soon as the sequence MERGE PAUSE was executed, the card would be pulled in, its code replacing everything after the PAUSE command. The program would then continue at the first step of the merged card.

Since the RPN-67 and -97 simulators do not have a physical card slot, it's up to the user to provide the card to be merged from the Card Manager. Executing a loop like:
    LBL 0
    MERGE
    PAUSE
    GTO 0
will wait for the user to load the card before continuing automatically. The loop alerts the user by a triple-beep sound to act, issued as many times as specified by this command. If no card is provided by the user within 3 minutes, the merge command will be aborted. A red bar is shown, indicating the time left until time-out occurs.
If the sound is suppressed by setting its repeat number to 0, no time-out will occur.
Note that the acoustic alert also works in vintage mode (available on the iPad), although the repeat number has to be defined in Enhanced Mode.
For a sophisticated program involving two merge operations, see the program SIN or COS to 105 Places in the Math section of Library U.
2 CLR EXT
Sets extended registers R.00..R.99 to 0.
 
–2 CLR Flags
Clears all flags F0…F9.
To clear extended flags F4…F9 only, use operation CLR F4-F9 (no. 93, above)
3 CLR STK
Sets stack registers X, Y, Z, T to 0.
 
4 CLR A..E
Sets registers A, B, C, D, E to 0.
 
5 PUSH A..E
Puts registers A..E on an internal 4-level stack.
If the stack is full, the oldest register set is lost.
 
–5 POP A..E
Retrieves registers A..E from the internal 4-level stack.
The oldest level gets copied to the next level (like T to Z on the regular stack.)
 
6 REV STK
Reverses the order of stack registers X, Y, Z, T.
 
7 P ⇢ S
Copies primary registers to secondary registers (R0..R9 ➞ RS0..RS9).
 
–7 P ⇠ S
Copies secondary to primary registers (RS0..RS9 ➞ R0..R9).
 
8 Separate x
Separates x into integer and fractional part.
On return: x = fractional part, y = integer part
x = 3.141592654
EXEC FN ➞ x = 0.141592654, y = 3
9 Set +∞
Displays the positive overflow value 9.999999999 99 and lights the +∞ infinity symbol. If executed from a running program, it will be halted.
TAN(90°) lights +∞ indicator.
If followed by N!, we get the factorial of infinity ! = √(2π) = 2.5066, as a consequence of the derivative of the zeta function at 0 equalling log(√(1/2π)).
–9 Set -∞
Displays the negative overflow value -9.999999999 99 and lights the -∞ infinity symbol. If executed from a running program, it will be halted.
 
10 RCL Extended ∑ Registers
Recalls extended statistical registers used internally for weighted mean,
T-statistics, skewness, and kurtosis to the stack.
The previous x-value is saved in LastX.
x = ∑x2 ,  y = ∑(x-y)2y ,  z = ∑x3y ,  t = ∑x4
11 P ≷ Non-Stat
Swaps primary and non-statistical registers (R0..R3).
Exchanges R0..R3 with RS0..RS3.
–11 P ≷ Stat
Swaps primary and statistical registers (R4..R9).
Exchanges R4..R9 with RS4..RS9.
12 STK & A..E ⇢ R.00..R.08
Copies stack and registers A..E to extended registers R.00..R.08.
 
–12 STK & A..E ⇠ R.00..R.08
Retrieves stack and registers A..E from extended registers R.00..R.08.
The previous x-value is saved in LastX.
 
13 PUSH Registers
Puts primary registers R0..R9 and secondary registers RS0..RS9 on an internal 4-level stack.
If the stack is full, the oldest register set is lost.
 
–13 POP Registers
Retrieves registers R0..R9 and secondary registers RS0..RS9 from the internal 4-level stack.
The oldest level gets copied to the next level (like T to Z on the regular stack.)
 
14 Save Warnings on
In Card Manager, enables warnings when trying to leave the current card with unsaved changes.
 
–14 Save Warnings off
In Card Manager, suppresses warnings when trying to leave the current card with unsaved changes.
 
15 CPLX Mode on
Turns complex mode on. Same as h A or EXT A when complex mode is off.
 
–15 CPLX Mode off
Turns complex mode on. Same as h A or EXT A when complex mode is on.
 
16 Toggle CPLX Mode
Turns on complex mode, if it is currently off, and vice versa.
This command is useful in cases where the stack has already been set up with complex arguments.
Conversely, the extended operation CPX MODE (01, see above) requires x to define the desired setting, disrupting the stack.
17 Get Haptics
Retrieves the current haptic feedback level, where:
-1 = device doesn't support haptics
 0 = no feedback  |  1 = light  |  2 = medium  |  3 = heavy
 
–17 Set Haptics
Sets the current haptic feedback level, where:
 0 = no feedback  |  1 = light  |  2 = medium  |  3 = heavy
Other values are ignored.
This command does nothing if:
– the device does not support haptic feedback
– the iOS version is less than 10
System Haptics have been turned off in the device settings
20 Print Date
Prints the localized date on the paper tape (right-justified).

x = date (mm.ddyyyy). If invalid, the current date is used.
Print the current date (Nov 20, 2017, USA)
0 EXEC FN → November 20, 2017

Print Oct 23, 1956 (Hungary)
10.231956 EXEC FN → 1956. október 23.
-20 Print Time
Prints the localized time on the paper tape (right-justified).

x = time (hh.mmss). If invalid, the current time is used.

Fractions of seconds are ignored.
Print the current time (15:01:25, USA)
-1 EXEC FN → 3:01:25 PM

Print 15:01:25 (Finland)
15.0125 EXEC FN → 15.01.25
21 Print DOW
Prints the localized name of the day of week of the given date on the paper tape (right-justified).

x = date (mm.ddyyyy). If invalid, the current date is used.

Use negative date for Julian calendar.
Weekdays up to and including Oct 14, 1582 are Julian by default.

If the date is an Easter date, "Sunday" is replaced by "Easter".
Print the day of the week of Isaac Newton's birth
1.041643 EXEC FN → Sunday (Gregorian calendar)
-12.251642 EXEC FN → Sunday (Julian calendar)

Print the day of the week of Isaac Newton's death (on Polish iOS device)
3.311726 EXEC FN → niedziela (Sunday, Gregorian calendar, old style)
-3.201726 EXEC FN → niedziela (Sunday, Julian calendar)
22 Print Device Name
Prints the name of the device the app is running on.

Returns in x the type of device:
1 = iPhone, 2 = iPad, 3 = iPod, 0 = other (negative if running on Apple Silicon Mac).
NOTE: On a Mac, the system currently returns "iPad" for all devices.
If executed on an iPad Pro running iOS 10.3.3:

EXEC FN → prints iPad on printer
Display = 2 (for iPad)
-22 Print iOS Version
Prints the iOS version number.

Returns in x the version as numeric value.
If executed on a device running iOS 10.3.3:

EXEC FN → prints iOS 10.3.3 on printer
Display = 10.33
25 Print Inline Text 1
Prepends the next line to be printed with pre-defined text.

x = number of extended register where text begins
(see operation TEXT, no. 87, above for details)

A PDF list of possible TEXT characters may be downloaded here.
To print a result prepended by α–β:

Assuming the text is stored in registers R.80 and R.81:
0.192045193 STO.80   "α–β"
0.058000000 STO.81   ":" (Note that a 000-value ends the string)
80 EXEC FN → text at R.80 is ready for printing
Print text, e.g. result 152.75 → α-β:      152.75  ***
–25 Print Inline Text 2
Same as Print Inline Text 1, but with the result indicator "  ***" suppressed, providing more space for the user text.

Note:
If x points to a register containing 0, the user text is also suppressed.
To print a result prepended by α–β:

Assuming the text is stored in registers R.80 and R.81:
0.192045193 STO.80   "α–β"
0.058000000 STO.81   ":" (Note that a 000-value ends the string)
80 EXEC FN → text at R.80 is ready for printing
Print text, e.g. result 152.75 → α-β:           152.75
26 Print Line Pattern
Prints any of 14 line patterns on the paper tape.

x = pattern number (1..14)
If x is invalid, an empty line will be printed.

1: –––––––––––    8: - - - - - -
2: ===========    9: = = = = = =
3: -=-=-=-=-=-   10: -+-+-+-+-+-
4: ***********   11: * * * * * *
5: /\/\/\/\/\/   12: ‗‗‗‗‗‗‗‗‗‗‗
6: ———————————   13: ▬▬▬▬▬▬▬▬▬▬▬
7: ∙∙∙∙∙∙∙∙∙∙∙   14: ● ● ● ● ● ●


Note:
The patterns are the same as made available on RPN-67/97 Pro by tapping TXT.
In TXT, patterns are numbered 1..7 in the left column, 8..14 in the right column.
To print a solid line:
6 EXEC FN

To print a thick solid line:
13 EXEC FN

To print a double line:
12 EXEC FN

30

Load Data Card
Loads the data card named zDATAx, where x is any integer between 0 and 1,000,000 (sign and fractional digits ignored).

All data on the card gets loaded, i.e. primary and secondary registers as well as extended registers 00..99.

The command returns:
• the number of cards named zDATAx found (only the first will get loaded)
  (0 if the specified data card does not exist)
• –1 if an error occurred

The card number is saved in LastX.

Working with zDATA data cards sample programs:

If embedded in an auto-executing subroutine (LBL 99), registers may be preloaded without using program code and without user intervention.

For example:

90 99      LBL 99
          "+30"
33 43      STO FN
          "+123"
32 44 99   OP EXEC FN
35 22      RTN

would auto-load all registers from the data card zDATA123.
(Note: How to enter values like "+123" is shown in OP 98 above).
–30 Load Data Card Ext
Loads only the extended registers from the data card named zDATAx (where x is any integer between 0 and 1,000,000, sign and fractional digits ignored).

Stack registers Y and Z contain the range of registers to load. Each value is automatically limited to the range 0..99.

Stack register T may specifiy the register to receive the first value of the range. If invalid, the range will be stored at the original location.

The command returns:
• the number of cards named zDATAx found (only the first will get loaded)
  (0 if the specified data card does not exist)
• –1 if an error occurred

The card number is saved in LastX.
Example:

          "-30"
33 43      STO FN
          "+20"
41         ENTER
          "+75"
41         ENTER
          "+85"
41         ENTER
          "+123"
32 44 99   OP EXEC FN

would load registers R.75..R.85 from the data card zDATA123 beginning at R.20.
(Note: How to enter values like "+123" is shown in OP 98 above).
31 Create or Update Data Card
Stores all registers on the data card(s) named zDATAx (where x is any integer between 0 and 1,000,000, sign and fractional digits ignored).

If the card already exists, it will be updated (unless it is write-protected.)

The command returns:
• 0 if at least one card named zDATAx was updated
• 1 if a card named zDATAx was created
• –1 if the operation failed
• –2 if all cards zDATAx are write-protected

The card number is saved in LastX.

Note:
As a safeguard against programming errors, card creation is limited to 100 cards per second. If exceeded, the program will stop with "Error".
Example:

          "+31"
33 43      STO FN
          "+123"
32 44 99   OP EXEC FN

would create (or update) the data card zDATA123.
(Note: How to enter values like "+123" is shown in OP 98 above).
–31 Delete All Data Cards
Deletes all unprotected data cards whose name begins with zDATA (matching letter-case.)

x must be set to 666, otherwise the command is ignored.

The command returns:
• the number of data cards beginning with zDATA deleted
• –1 if the operation failed
Example:

          "-31"
33 43      STO FN
          "+666"
32 44 99   OP EXEC FN

would delete all unprotected data cards beginning with zDATA.
(Note: How to enter values like "+123" is shown in OP 98 above).
32 Delete Data Card
Deletes all unprotected data cards named zDATAx (where x is any integer between 0 and 1,000,000.)

The command returns:
• the number of data cards named zDATAx deleted
• –1 if no card named zDATAx was found
• –2 if all cards named zDATAx are write-protected
Example:

          "+32"
33 43      STO FN
          "+123"
32 44 99   OP EXEC FN

would delete the unprotected data cards named zDATA123.
(Note: How to enter values like "+123" is shown in OP 98 above).
–32 Delete Data Card Series
Deletes y unprotected data cards named zDATAx, zDATAx+1, zDATAx+2, .. zDATAx+y-1
(where x is any integer between 0 and 1,000,000-y+1.)

y must be in the range 1..100.

Returns the number of data cards deleted
Example:

          "-32"
33 43      STO FN
          "25"
41         ENTER		  
          "+123"
32 44 99   OP EXEC FN

would delete data cards named zDATA123, zDATA124, zDATA125 up to
zDATA146, leaving protected cards intact.
33 Check Data Card Existence I
Checks if a data card named zDATAx exists (where x is any integer between 0 and 1,000,000.)

If the card does not exist, the program stops and "zDATAx missing" is printed on the paper tape.

The command returns:
• the number of data cards named zDATAx found, –2 if none
• –1 if the operation failed

The card number is saved in LastX.
Example:

          "+33"
33 43      STO FN
          "+796314"
32 44 99   OP EXEC FN

would return –2 if no data card named zDATA796314 exists.
"zDATA796314 missing" would be printed, and the program would stop.
If three cards of this name were found, the value 3 would be returned.
(Note: How to enter values like "+796314" is shown in OP 98 above).
–33 Check Data Card Existence II
Checks if a data card named zDATAx exists (where x is any integer between 0 and 1,000,000.)

This command works the same as #33 above, except that:
– The program does not stop if the card is not found
– The message "zDATAx missing" is only printed in print modes NORM and TRACE.
 
40 MAT MOD
Modifies registers R1…R9 (frequently used to store an up to 3x3 matrix) by applying a predefined operation to each register.

x = number defining the desired operation (see below)
y = argument (required by dyadic operations)

Dyadic operations applied to each register, argument in y:
  1  -
  2  +
  3  ×
  4  /     Error if y = 0
  5  ^     Error if reg = 0 and y ≤ 0; or
           reg < 0 and y or 1/y not integer


Monadic operations applied to each register:
 10  √x    Error if any register < 0.
 11  x²
 12  LN    Cleared registers ignored.
           Error if any register < 0.
 13  eˣ
 14  LOG   Cleared registers ignored.
           Error if any register < 0.
 15  10ˣ
 16  1/x   Cleared registers ignored
 17  CHS
 18  ABS
 19  INT
 20  FRAC
 21  RND   Round according to display settings
 22  RAN#  Random number (0 ≤ r < 1)


Miscellaneous operations
 23  SORT  Sort registers in ascending (y pos.) or
           descending (y neg.) order.
           If y = ±1…9, only the first y registers
           are sorted.
 24  DUPS  Check for duplicates in R1…R9.
           Returns 0 if no duplicates were found,
           1 otherwise.
           If y = 2…9, only the first y registers
           are checked.
To invert every register from R1 to R9:

16 EXEC FN
Note how registers containing 0 are simply skipped; no error is produced.


To convert every register from R1 to R9 to its square root:

10 EXEC FN
If any of the registers is negative, an error is produced. None of the registers will be changed.


To make sure every register from R1 to R9 is negative:

18 EXEC FN  17 EXEC FN
This first makes the registers positive, then changes their signs.


To divide every register from R1 to R9 by 2:

2 ENTER 4 EXEC FN


To take the cube root of every register from R1 to R9:

3  1/x  5 EXEC FN


To create nine sorted random integers in the range 0...99:

22 EXEC FN  EEX 2 ENTER  3 EXEC FN  19 EXEC FN  23 EXEC FN


To check if there are duplicates in R1..R6:

6 ENTER  24 EXEC FN
80 Change Info Display (RPN-97 only)
Sets the info shown above the display according to x:

0 = none
1 = registers
2 = instructions
3 = program code
This command is ignored on RPN-67.
90 GTO (j)
Continues program execution at the label stored in J (where 0 ≤ j ≤ 99).
To use GTO (j) without affecting the stack, use an auxiliary subroutine, e.g.:

90 90      LBL 90
35 14      PUSH STACK
          "+90"
33 43      STO FN
35 15      POP STACK
32 44 99   OP EXEC FN
35 22      RTN

Then, after setting j, simply use GTO 90 to branch to label j.
–90 GSB (j)
Calls the subroutine at the label stored in J (where 0 ≤ j ≤ 99).
To use GSB (j) without affecting the stack, use the same auxiliary subroutine as shown above.
Then, after setting j, simply use GSB 90 to call subroutine j.
91 STO J
Stores the positive integer part of x in the indirection register J.
Values equal or larger than 100 are ignored.
 
–91 RCL J
Recalls the indirection register J value to x.
 
92 INC J
Increases the value of the indirection register J by one. Ignored if j = 99.
 
–92 DEC J
Decreases the value of the indirection register J by one. Ignored if j = 0.
 
93 GTO (k)
Continues program execution at the label stored in K (where 0 ≤ k ≤ 99).
To use GTO (k) without affecting the stack, use an auxiliary subroutine, e.g.:

90 91      LBL 91
35 14      PUSH STACK
          "+93"
33 43      STO FN
35 15      POP STACK
32 44 99   OP EXEC FN
35 22      RTN

Then, after setting k, simply use GTO 91 to branch to label k.
–93 GSB (k)
Calls the subroutine at the label stored in K (where 0 ≤ k ≤ 99).
To use GSB (k) without affecting the stack, use the same auxiliary subroutine as shown above.
Then, after setting k, simply use GSB 91 to call subroutine k.
94 STO K
Stores the positive integer part of x in the indirection register K.
Values equal or larger than 100 are ignored.
 
–94 RCL K
Recalls the indirection register K value to x.
 
95 INC K
Increases the value of the indirection register K by one. Ignored if k = 99.
 
–95 DEC K
Decreases the value of the indirection register K by one. Ignored if k = 0.
 
96 Auto-exec Sound
Turns sound on loading auto-executing program card off or on.
x = 0: turn sound off
x ≠ 0: turn sound on
 
97 Get Pause
Retrieves the currently set pause length (in secs).
 
–97 Set Pause
Sets the pause length.
x = 1, 2, or 5 (seconds). Other values are ignored.
 
98 Get Volume
Retrieves the currently set sound volume (any value between 0 and 1).
 
–98 Set Volume
Sets the sound volume.
x = any value between 0 and 1. Values outside this range are ignored.
 
99 Save Calculator Settings
Stores the current display mode, trig mode, DP character, and group separator.
 
–99 Restore Calculator Settings
Restores the saved display mode, trig mode, DP char, and group separator.
Ignored if no settings have been saved beforehand.
 
  Math  
100 Numerical Integration
Finds value of integrating a function f(x) over a given range.

The function f(x) may expect the stack to be filled with x.

x = label where function f(x)is stored
y = upper limit, z = lower limit

Label can be:
LBL 0 – 9: 0 – 9
LBL A – E: 11 – 15
LBL a – e: 11.1 – 15.1
LBL 00 – 99: 0 – 99 (append .2 for 00 – 09 and 11 – 15)
1) Show that

Store the function as LBL.67 (in W/PRGM mode):
LBL + 67  x2  1  +  4  ÷  1/x  RTN
Switch back to RUN mode.
Enter range and label:
0 ENTER 1 ENTER 67 EXEC FN → 3.141592654

2) Integrate f(x) = xx between 0 and 1
Use LBL A to store the function (in W/PRGM mode):
LBL A  yx  RTN
Switch back to RUN mode.
Enter range and label:
0 ENTER 1 ENTER 11 EXEC FN → 0.7834305107

If you want to evaluate the function manually, be sure to fill the entire stack with the argument x before executing the subroutine (unless the function doesn't make use of this.)
–100 Integration Accuracy
Selects the accuracy of the Numerical Integration function, trading precision with speed of execution.
In most cases, the setting "Normal" will produce results with at least display precision.

x = accuracy value

Values (other values select the default setting "Normal"):
0: Normal
1: High
2: Best
Computing the following integral which evaluates to infinity at both ends of the interval:

yields the following results:
3.134803651 Normal
3.138194839 High
3.139892917 Best
101 Find Root
Finds roots of a function f(x) in a given range.
If no root can be found, 0 is returned and flag F9 is set. If F9 is cleared, 0 is a solution.

The function f(x) may expect the stack to be filled with x.

x = label where function f(x) is stored
y = upper guess, z = lower guess

Label can be:
LBL 0 – 9: 0 – 9
LBL A – E: 11 – 15
LBL a – e: 11.1 – 15.1
LBL 00 – 99: 0 – 99 (append .2 for 00 – 09 and 11 – 15)
Solve ex2+7x-30 = 1

Use LBL 1 to store the function (in W/PRGM mode):
LBL 1  x2  x≷y  7  ×  +  30  –  ex  1  –  RTN
Switch back to RUN mode.
Try range 0..20:
0 ENTER 20 ENTER 1 EXEC FN → 3 (exactly)
Try range -20..0:
-20 ENTER 0 ENTER 1 EXEC FN → -10 (exactly)

If you want to evaluate the function manually, be sure to fill the entire stack with the argument x before executing the subroutine (unless the function doesn't make use of this.)
102

Runge-Kutta 1
Finds solution of a first-order ordinary differential equation by applying the explicit fourth-order Runge-Kutta method.
In other words, the method finds function values of y(x) where only the slope (derivative) y'(x) at any point (x,y) is defined by a function f(x,y), but y(x) is unknown. Since an infinite number of functions meet this requirement, a starting point (x0,y0) satisfying y0 = y(x0) has to be given. By taking into account the slope y' = f(x,y) at this point, then increasing x by an increment h, successive points of y(x) are found. The calculation ends when x0 + n × increment (n integer) exceeds the desired x value.

The user-supplied function f(x,y) determining the slope at (x,y) may expect the stack to be preset with x,y in X,Y as well as in Z,T.

Input:
Register A = label where function f(x,y) is stored *)
Register B = increment h between x values
Register C = x-value of starting point x0
Register D = y-value of starting point y0
x = x-value at which y(x) is to be found

Output:
x = x-value of function value y(x), i.e. the first value x0 + n × increment
      exceeding the desired x-value
y = function value y(x)

*)
Label can be:
LBL 0 – 9: 0 – 9
LBL A – E: 11 – 15
LBL a – e: 11.1 – 15.1
LBL 00 – 99: 0 – 99 (append .2 for 00 – 09 and 11 – 15)


Note: If flag F9 is set, the increment h will be automatically adjusted, if necessary, to maintain accuracy.

1) Solve at x = 1: y' = y, with x0 = 0, y0 = y(0) = 1

y' = y has an exact solution: y = ex + C (C = any constant).
By choosing the starting point (0,e0=1), we should get the function y(x) = ex and thus y(1) = e = 2.71828.
Since y' = y, the function f(x,y) for calculating the slope simply has to return y.

Use LBL 9 to store the function (in W/PRGM mode):
LBL 9  x≷y  RTN
Switch back to RUN mode.
Store the label number in register A:
9 STO A
Enter arguments (increment h = 0.1, starting point, x):
0.1 STO B  0 STO C  1 STO D  1
Execute:
EXEC FN → x = 1, y = 2.718279744 (≈ e)
The slope of y = ex at (1,e) is e.
Check accuracy:
ex  %CH → correct result is 0.000077% higher

Find e2.66, using h = 0.01 :
0.01 STO B  2.66
Execute:
EXEC FN → x = 2.66, y = 14.2962891
Check accuracy:
ex  %CH → correct result is 0.000000022% higher


2) Solve at x = 1.5: y' + 0.7y = 2x, with x0 = 0, y0 = y(0) = -20/4.9

The function to store is y' = 2x - 0.7y

We use LBL 8 (in W/PRGM mode):
LBL 8  2  ×  x≷y  0.7  ×  –  RTN
Switch back to RUN mode.
Store the label number in register 0:
8 STO A
Enter arguments (starting point, increment h = 0.1, x):
0.1 STO B  0 STO C  20 ENTER 4.9 ÷ CHS STO D  1.5
Execute:
EXEC FN → x = 1.5, y = 0.204081633
[Note: y(x) = 20/4.9*(0.7x-1)]
–102

Runge-Kutta 2
Finds solution of a second-order ordinary differential equation by applying the explicit fourth-order Runge-Kutta method.
In other words, the method finds function values of y(x) where only the second derivative y"(x) at any point (x,y) is defined by a function f(x,y,y'), but y(x) is unknown. Since an infinite number of functions meet this requirement, a starting point (x0,y0,y0') satisfying y0 = y(x0) and y0' = y'(x0) has to be given. By taking into account the second derivative y" = f(x,y,y') at this point, then increasing x by an increment h, successive points of y(x) are found. The calculation ends when x0 + n × increment (n integer) exceeds the desired x value.

The user-supplied function f(x,y,y') determining the second derivative at (x,y) may expect the stack to be preset with x,y,y' in X,Y,Z, respectively.

Input:
Register A = label where function f(x,y,y') is stored *)
Register B = increment h between x values
Register C = x-value of starting point x0
Register D = y-value of starting point y0
Register E = y'-value at starting point x0,y0
x = x-value at which y(x) is to be found

Output:
x = x-value of function value y(x), i.e. the first value x0 + n × increment
      exceeding the desired x-value
y = function value y(x)

*)
Label can be:
LBL 0 – 9: 0 – 9
LBL A – E: 11 – 15
LBL a – e: 11.1 – 15.1
LBL 00 – 99: 0 – 99 (append .2 for 00 – 09 and 11 – 15)


Note: If flag F9 is set, the increment h will be automatically adjusted, if necessary, to maintain accuracy.

Solve at x = 0.9:

(1 – x²) y" + xy' = x
, with x0 = 0, y0 = y(0) = 0, y0' = y'(0,0) = 0

The function to store is y" = x(1 – y') / (1 – x2)

Use LBL a to store the function (in W/PRGM mode):
LBL a  RCL – . T  x≷y  ×  LASTx  x2  1  –  ÷  CHS  RTN
Switch back to RUN mode.

Store the label name in register A:
11.1 STO A

Store arguments (increment h = 0.1, starting point, y0', x):
0.1 STO B  0 STO C  STO D  STO E  0.9

Execute:
EXEC FN → x = 0.9, y = 0.14394
105 Linear Equation Solver
Solves a system of n equations in n unknowns (n = 1..9)

Store coefficients in extended registers as follows:
a11x1 + a12x2 + … = b1 in registers R.01…R.09, with b1 in R.00
a21x1 + a22x2 + … = b2 in registers R.11…R.19, with b2 in R.10
...
Set x = number of equations

On return: Solutions x1, x2, ... in registers R1, R2, ...
Solve this system of 4 equations in 4 unknowns:
 2x1 - 3x2 + 5x3 - x4 = 2
-5x1 + 7x2 + x3 + x4 = 6
 5x1 - 4x2 - 2x3 + 8x4 = 8
11x1 + 6x2 + 5x3 -8x4 = -39

2 STO.01   -3 STO.02   5 STO.03   -1 STO.04   2 STO.00
–5 STO.11   7 STO.12   1 STO.13   1 STO.14   6 STO.10
5 STO.21   -4 STO.22   -2 STO.23   8 STO.24   8 STO.20
11 STO.31   6 STO.32   5 STO.33   -8 STO.34   -39 STO.30
4 EXEC FN ➞ x1 = -2, x2 = -1, x3 = 1, x4 = 2 (in R1..R4)
106 Quartic Equation (aka Biquadratic equation)
Finds all solutions of the equation ax4 + bx3 + cx2 + dx + e = 0.
Input: a..e ➞ registers A..E.
Results may be complex and are stored as follows:
x1 = R1 + RS1i, x2 = R2 + RS2i, x3 = R3 + RS3i, x4 = R4 + RS4i
x = result type (see info field of function)
Find the roots of x4 + x - 1 = 0:
CL REG  1  STO A  STO D  CHS  STO E  
EXEC FN
Results: x = 2, i.e. two distinct real roots and two complex conjugate non-real roots:
x1 = 0.7245,   x2 = -1.2207,   x3,4 = 0.2481 ± 1.0340i
Verify solution x3:
CPLX  RCL 3  x2  x2  RCL+3  0  ENTER  1  –  ➞  0 + 0i
110

Matrix Print
Print n×n matrix stored in extended registers

Assuming the coefficients of an n×n matrix are stored in extended registers as follows:
a11x1 + a12x2 + … = b1 in registers R.01…R.09, with b1 in R.00
a21x1 + a22x2 + … = b2 in registers R.11…R.19, with b2 in R.10
...
then each row of the matrix is printed as a block of numbers.

The last number in each block is the b value.

Set x = number of rows (n)

With x = 2, output will typically look like this:
    Row 1:
 0.6709 01
 0.6463 02

 0.3150 00

    Row 2:
 0.8665 11
 0.4622 12

 0.2765 10
111 MAT –
Subtract extended registers R.91..R.99 from internal registers R1..R9
 
112 MAT XCH
Exchange extended registers R.91..R.99 with internal registers R1..R9
 
113 MAT CHS
Change sign of all values in extended registers R.91..R.99
 
115 Cholesky Decomposition
Perform Cholesky decomposition on 3x3 matrix formed by registers R1..R9
(where row 1 = R1..R3)
This operation replaces the original matrix A by a unique triangular matrix L, called the Cholesky factor, such that A = LLT (LT = transpose of L).

To verify the result, perform the following operations:
MAT T        'Transpose L
MAT STO   'Store LT in R.91..R.99
MAT T        'Transpose LT to revert to L
MAT MUL   'Multiply L by its transpose LT
R1..R9 should now contain the original matrix A.
Find L for the matrix A:
25  15  -5
15  18   0
-5   0  11
25 STO 1   15 STO 2   -5 STO 3
15 STO 4   18 STO 5   0 STO 6
-5 STO 7   0 STO 8   11 STO 9
EXEC FN →
 5   0   0
 3   3   0
-1   1   3
120 Primality Test
Tests if the integer in x is prime. The largest prime handled reliably is 2,038,074,743.
Returns x = 1 if the value is prime, 0 otherwise.
78901 is prime, 78907 is not.
121 PopCount(x)
Returns the number of 1's in the binary representation of x.
Also known as the Hamming weight of the binary number.
If x is negative, the 1's of the 2's-complement of x are counted, including the sign bit. In this case, x is treated as a 64-bit number.

x = any integer in the range -9,999,999,999 to +-9,999,999,999.
13 = 1101 → 3
2017 = 11111100001 → 7
65537 = 10000000000000001 → 2
9999999999 = 1001010100000010111110001111111111 → 20
-9999999999 = 11111111111111111111111111111101101010111...
...11101000001110000000001 → 45
130 Geometric Mean
Geometric mean of all numbers in range of extended registers.
x = begin of range in extended registers, y = end of range in extended registers.
Returns x = geometric mean
What is the geometric mean of 2, 3.4, 3.41, 7, 11, 23?
Store the numbers in consecutive registers: 33,34,..38: 2 STO.33, 3.4 STO.34,...23 STO 38
33 ENTER 38 EXEC FN ➞ 5.87
131 Harmonic Mean
Harmonic mean of all numbers in range of extended registers.
x = begin of range in extended registers, y = end of range in extended registers.
Returns x = harmonic mean
What is the harmonic mean of 2, 3.4, 3.41, 7, 11, 23?
Store the numbers in consecutive registers: 33,34,..38: 2 STO.33, 3.4 STO.34,...23 STO 38
33 ENTER 38 EXEC FN ➞ 4.40
132 Arithmetic-Geometric Mean
Arithmetic-geometric mean M(x,y), or agm(x,y).
Returns x = geometric mean
Compute Gauss's constant, defined as 1/M(1,√2):
1 ENTER 2 √x EXEC FN 1/x ➞ 0.8346268
150 Sinc(x)
Returns the unnormalized cardinal sine function value sin(x)/x
x may be a complex number. sinc(0) = 1.
Examples:
sinc(0.5) = 0.9589, sinc(-1) = 0.8415
sinc(3i) = sinh(3)/3 = 3.3393
sinc(1.49+4.13i):
CPLX  4.13 ENTER 1.49 EXEC FN → 2.93–6.45i (in x,y)
–150 Sinc(x)
Returns the normalized cardinal sine function value sin(πx)/(πx)
x may be a complex number. sinc(0) = 1.
Examples:
sinc(0.5) = 0.6366, sinc(-1) = 0
sinc(3i) = sinh(3π)/(3π) = 657.3973:
sinc(1.49+4.13i):
CPLX  4.13 ENTER 1.49 EXEC FN → -5766.33+14535.79i (in x,y)
152 LN(x!)
Returns the natural logarithm of the factorial of any positive number
0 ≤ x ≤ 4.4673259 × 1097.
Examples:
x = 5 → 4.7875, (e4.7875 = 120 = 5!)
Number of digits of 100,000 ! : 456,754
152 STO FN EEX 5 EXEC FN 10 LN ÷
8 STO FN x≷y EXEC FN 10x
x = 2.8242, y = 456753 (100,000! = 2.8242 × 10456753)
153 LN(1+x)
High-precision evaluation, to be used with small values of x.
Example:
If x = e^(π * 10⁻⁹):
a. 3.141592649 × 10-9 (function result)
b. 3.141592759 × 10-9 (computed normally)
c. 3.14159264865 × 10-7 (correct result)
154 ex–1
High-precision evaluation, to be used with small values of x.
Example:
If x = e^(π * 10⁻⁹):
a. 3.141592659 × 10-9 (function result)
b. 3.140000000 × 10-9 (computed normally)
c. 3.14159265852 × 10-9 (correct result)
155 Lambert(x)
Returns the Lambert W function value of x.
If x = W(arg) then arg = x·ex.
arg ≥ -1/e (real values only)
If -1/e < arg < 0, two values exist; only one is returned.
Examples:
Lambert(0) = 0
Lambert(-1/e) = -1
Lambert(-ln(2)/2) = -ln(2)
Lambert(1) = 0.567143 (the Ω constant; Ω·eΩ = 1)
160 Lucas(x)
Returns the Lucas number of x, defined as Φx + Φ–x·cos(π·x),
where Φ = Golden Ratio

Note: The Lucas number sequence is built in the same way as the Fibonacci number sequence, except that it starts with 2,1,.. instead of 0,1,..
Examples:
Lucas(7) = 29
Lucas(-37) = -4
Lucas(π) = 4.3357
165 Riemann Zeta Function ζ(x)
Returns the zeta function value of x (x = real number)
Overflow if x < –118.289468.

Notes:
ζ(0) = –1/2
ζ(1) = +∞
ζ(2) = π2/6 = 1.644934067
ζ(3) = 1.202056903 (Apéry's constant)
ζ(4) = π4/90 = 1.082323234
ζ(2n) = 0 for all negative integers n
Examples:
ζ(0.95) = -19.42643720
ζ(1.05) = 20.58084430
ζ(π) = 1.176241738
ζ(20) = 1.000000954
ζ(-118.118) = 2.537130194E99
166 Bernoulli(n)
Returns the nth Bernoulli number, with x = n (integer, 0 ≤ n ≤ 117)
Overflow if n > 117.

Notes:
B(0) = 0
B(1) = ±0.5
B(2n+1) = 0 for all integers n > 0
Examples:
B(2) = 1/6 = 0.166666667
B(10) = 5/66 = 0.075757576
B(116) = -1.748892184E98
  Geometry  
250 Truncated Circular Cone
Calculates properties of the truncated circular cone. For the regular cone, set top radius to zero.
Inputs: x = base surface radius, y = top surface radius (0 for regular cone),
z = height
Returns: x = volume, y = total surface, z = lateral surface, t = center of mass (above base surface)
Calculate properties of a truncated cone with height h = 7, base radius r1 = 5 and top radius r2 = 2:
7 ENTER 2 ENTER 5 EXEC FN ➞
285.88 (volume), 258.59 (total surface), 167.48 (lateral surface), 2.56 (center of mass)
251 Spherical Segment or Cap
Calculates properties of the spherical segment. For the spherical cap, set top radius to zero.
Inputs: x = lower radius of segment, y = upper radius of segment (0 for cap),
z = height of segment
Returns: x = volume, y = total surface, z = lateral surface (or cap surface), t = radius of sphere
Calculate properties of a spherical segment with height
h = 7, base radius r1 = 5 and top radius r2 = 2:
7 ENTER 2 ENTER 5 EXEC FN ➞
498.47 (volume), 327.96 (total surface), 236.85 (lateral surface), 5.39 (radius of sphere)
  Physics  
300 Oblique Throw (meters)
Calculates the ballistic trajectory of an object thrown at a given initial angle and initial velocity.
Inputs: RA = initial angle, RB = initial velocity, x = desired horizontal distance
Returns:
x = height at distance x
y = maximum height (at half of landing point distance)
z = distance of landing point
t = time to reach highest point
A ball is thrown at at angle of 65 degrees. The initial velocity is 20 m/s.
Find the maximum height, the time to reach it, the height at horiz. distance = 7 m, and the distance of the landing point.
65 STO A 20 STO B 7 EXEC FN ➞
11.65 m (height at horiz. dist. 7 m), 16.75 m (max. height), 31.25 m (distance of landing point), 1.85 s (time to reach highest point)
–300 Oblique Throw (feet)

See description above
A ball is thrown at at angle of 65 degrees. The initial velocity is 50 ft/s.
Find the maximum height, the time to reach it, the height at horiz. distance = 20 ft, and the distance of the landing point.
65 STO A 50 STO B 20 EXEC FN ➞
28.48 ft (height at horiz. dist. 20 ft), 31.91 ft (max. height), 59.52 ft (distance of landing point), 1.41 s (time to reach highest point)
305 Satellite I
Properties of a satellite at known altitude
Input:
x = altitude above Earth surface, in m
Returns:
x = orbital time, in s
y = velocity, in m/s
z = velocity, in km/h
t = escape velocity, in m/s
    (minimum speed needed to escape from Earth's gravitational influence)
Calculate properties of a satellite 640 km above Earth.

640 EEX 3 EXEC FN ➞
5842 s ≈ 97 min (orbital time)
7541 m/s (velocity)
27147 km/h (velocity)
10664 m/s (escape velocity)
–305 Satellite II
Properties of a satellite with known orbital time
Input:
x = orbital time around Earth, in s
Returns:
x = altitude above Earth surface, in m
y = velocity, in m/s
z = velocity, in km/h
t = escape velocity, in m/s
    (minimum speed needed to escape from Earth's gravitational influence)
Calculate properties of a synchronous satellite.

Orbital time = 1 day = 86400 s

86400 EXEC FN ➞
35873006 m ≈ 35.9 km (altitude)
3072 m/s (velocity)
11059 km/h (velocity)
4345 m/s (escape velocity)
310 Hydrogen Atom I
Calculates properties of an electron in orbit number n
(n = "principal quantum number")
Input:
x = orbit no.(1,2,3,..)
Returns:
x = total energy of electron (potential and kinetic), in eV
y = radius of orbit, in m
z = velocity of electron, in m/s
t = orbital frequency (revolutions per second), in Hz
Calculate the electron properties in the third orbit.

3 EXEC FN ➞
-1.5117 eV (energy)
4.7626·10-10 m (radius)
7.2923·105 m/s (velocity)
2.4369·1014 Hz (frequency)

To convert the energy from eV into J, select the built-in constant 01 ("e", "Elementary charge") and multiply.
–310 Hydrogen Atom II
Calculates energy emitted when electron drops to lower orbit
Inputs:
x = lower orbit number, y = higher orbit no. (1,2,3,..)
Returns:
x = energy of photon emitted, in eV
y = frequency of photon emitted, in Hz
z = energy of photon emitted, in J
t = wavelength of photon emitted, in nm
Calculate wavelength and energy of photon emitted when the electron drops from orbit 6 to orbit 1.

6 ENTER 1 EXEC FN ➞
13.2278 eV (energy)
3.1985·1015 Hz (frequency)
2.1193·10-18 J (energy)
93.7303 nm (wavelength)
  Electrical Engineering  
400 Resistance
Equivalent resistance of parallel resistors stored in R.x..R.y.
x = begin of range in extended registers, y = end of range in extended registers.
Returns 0 if any value in the range is 0.
What is the resistance of 1, 2, 3, 4, 5 Ω wired in parallel?
Store 1,2,3,4,5 in registers 20,21,22,23,24: 1 STO.20, 2 STO.21,...
400 EXEC FN ➞ 0.44 Ω
401

RLC Circuit (series)
Calculates impedances and phase shift of an series RLC circuit.
Input:
R0 = frequency (in Hz), R1 = resistor (in Ω), R2 = inductor(in H)
R3 = capacitor (in F)
[To omit a component, set its value to 0.]
Returns:
x = total impedance (in Ω)
y = inductive impedance (in Ω)
z = capacitive impedance (in Ω)
t = phase shift between voltage and current (in current angular units)
R4 = resonant frequency (in Hz)

Calculate values for a series RLC circuit consisting of a resistance of 12 Ω, an inductance of 0.15 H and a capacitor of 100 µF connected to a 50 Hz power supply.
50 STO 0  12 STO 1  0.15 STO 2  100 EEX CHS 6 STO 3
EXEC FN ➞
x = 19.44 Ω (total impedance)
y = 47.12 Ω (inductive reactance)
z = 31.83 Ω (capacitive reactance)
t = 51.88 ° (phase shift in degrees)
R4 = 41.09 Hz (resonant frequency)

Set frequency to resonant frequency and observe total impedance:
RCL 4 STO 0 EXEC FN ➞ 12.00 (= resistance value)
–401

RLC Circuit (parallel)
Calculates impedances and phase shift of a parallel RLC circuit.
Input:
R0 = frequency (in Hz), R1 = resistor (in Ω), R2 = inductor(in H)
R3 = capacitor (in F)
[To omit a component, set its value to a negative number.]
Returns:
x = total impedance (in Ω)
y = inductive impedance (in Ω)
z = capacitive impedance (in Ω)
t = phase shift between voltage and current (in current angular units)
R4 = resonant frequency (in Hz)

Calculate values for a parallel RLC circuit consisting of a resistor of 50 Ω, a coil of 20 mH and a of 5 µF capacitor connected to a 100 Hz power supply.
100 STO 0  50 STO 1  20 EEX CHS 3 STO 2  5 EEX CHS 6 STO 3
EXEC FN ➞
x = 12.66 Ω (total impedance)
y = 12.57 Ω (inductive reactance)
z = 318.31 Ω (capacitive reactance)
t = -75.34 ° (phase shift in degrees)
R4 = 503.29 Hz (resonant frequency)

Set frequency to resonant frequency and observe total impedance:
RCL 4 STO 0 EXEC FN ➞ 12.00 (= resistance value)
402

Wye-Delta Transformation
Converts star configuration of three impedances into its equivalent triangle configuration.
Real impedances: input values in R1, R2, R3. Output values replace input values.
Complex impedances: input values in R1, R2, R3 (real parts) and RS1, RS2, RS3 (imaginary parts).
Output values replace input values.

Convert values 43.35 Ω, 1.57 Ω, 81.98 Ω, arranged in star configuration, into values for the equivalent triangle configuration.
43.35 STO 1  1.57 STO 2  81.98 STO 3
EXEC FN ➞ R1 = 86.52 Ω, R2 = 2388.92 Ω, R3 = 45.75 Ω
–402

Delta-Wye Transformation
Converts triangle configuration of three impedances into its equivalent star configuration.
Real impedances: input values in R1, R2, R3. Output values replace input values.
Complex impedances: input values in R1, R2, R3 (real parts) and RS1, RS2, RS3 (imaginary parts).
Output values replace input values.

Convert values 50+12i Ω, 75-3.1i Ω, 100+11i Ω, arranged in triangle configuration, into values for the equivalent star configuration.
CPLX 12 ENTER 50 STO 1  -3.1 ENTER 75 STO 2
11 ENTER 100 STO 3
EXEC FN ➞ R1 = 33.43-0.67i Ω, R2 = 22.15+5.82i Ω,
R3 = 16.99+1.81i Ω
Note that in complex mode, PrintX prints both real and imaginary parts.
  Astronomy  
650 Gregorian Date ⇢ Julian Date
Shows Julian date of a given Gregorian date.

Input:
x = date (mm.ddyyyy)

Date may be in the range Jan 1, 0001 to Dec 31, 9999.
If an invalid date is given, the current date is used.
Dates before Oct 5, 1582 remain unchanged.
Non-existing Gregorian dates will produce an error (Oct 5, 1582 to Oct 14, 1582).

Returns:
x = Julian date
Isaac Newton was born on Jan 4, 1643 (Gregorian calendar).
What is his birthday according to the calendar in use back then?

1.041643 EXEC FN ➞ 12.251642 (Dec 25, 1642)


What is today's Julian date (if today = Nov 16, 2017)?

0 EXEC FN ➞ 11.032017 (Nov 11, 2017)
–650 Julian Date ⇢ Gregorian Date
Shows Gregorian date of a given Julian date.

Input:
x = date (mm.ddyyyy)

Date may be in the range Jan 1, 0001 to Oct 19, 9999.
If an invalid date is given, the current date is used.
Dates before Oct 5, 1582 remain unchanged.

Returns:
x = Gregorian date
What are the Gregorian dates of Julian dates Oct 4 and 5, 1582?

10.041582 EXEC FN ➞ 10.041582 (Oct 4, 1582)
10.051582 EXEC FN ➞ 10.151582 (Oct 15, 1582)


What is the Gregorian date if today's date is interpreted as Julian date (assuming today = Nov 16, 2017)?

0 EXEC FN ➞ 11.292017 (Nov 29, 2017)
651 Calendar Date to Julian Day Number
Calculates the Julian day number from a given date and time.

Input:
x = date (mm.ddyyyy)
y = time (hh.mmss)

Date may be in the range Jan 1, 0001 to Dec 31, 9999.
If an invalid date is given, the current date is used; an invalid time will be changed to the current time.
Dates after Oct 4, 1582 are assumed to be Gregorian.
Non-existing Gregorian dates will produce an error (Oct 5, 1582 to Oct 14, 1582).

Returns:
x = Julian day number (negative if input date after Oct 4, 1582 was entered as Julian date, i.e. negative)
y = time
What is the Julian day number of July 4, 1776?
To get the integer value, set time to noon.

12 ENTER 7.041776
EXEC FN ➞ 2369916


Calculate the Julian day number of the current date and time:

-1 ENTER ENTER (Set invalid date and time)
EXEC FN ➞ 2458071.918
x≷y ➞ 10.02188 (time)
–651 Julian Day Number to Calendar Date
Calculates the calendar date corresponding to a given Julian day.

Input:
x = Julian date number (negative to enforce Julian calendar)

Julian day number may be in the range 1,721,423.5 to 5,373,484.5.
The fractional part denotes the deviation from noon, i.e. x.5 is 0:00 of day x+1.

Returns:
x = date (negative if date after Oct 4, 1582 is shown as Julian date)
y = time
On what date was Julian day number 2,000,000?

2 EEX 6 EXEC FN ➞ 9.140763 (Sep 16, 763)


What dates correspond to Julian day numbers 2,299,160 and 2,299,161?

2299160 EXEC FN ➞ 10.041582 (Oct 4, 1582)
2299161 EXEC FN ➞ 10.151582 (Oct 15, 1582)
[Note change from Julian calendar to Gregorian calendar]
655 UT to GMST
Converts universal time to Greenwich mean sidereal time.

Input:
x = universal time UT (hh.mmss)
y = date (mm.ddyyyy)

If an invalid date or time is given, the current value is used.
Non-existing Gregorian dates will produce an error (Oct 5, 1582 to Oct 14, 1582).

Returns:
x = Greenwich mean sidereal time GMST (hh.mmss)
y = Greenwich mean sidereal time GMST (° decimal)
z = Time (hh.mmss), input UT or current time if invalid
t = Date (mm.ddyyyy), input date or current date if invalid
What was the GMST at 14h 36m 51.67s UT on April 22nd 1980?

4.221980 ENTER 14.365167
EXEC FN ➞ 4.400523 (4h 40m 5.23s) or 70.0218° (in Y)


Find the GMST at 6h 30m UT on Oct 3, 2001.

10.032001 ENTER 6.30
EXEC FN ➞ 7.180833 (7h 18m 8.33s) or 109.5347° (in Y)


Find the GMST if the UT is the current time and date.

-1 ENTER EXEC FN ➞ UT, R↑ ➞ date, R↑ ➞ time
–655 GMST to UT
Converts Greenwich mean sidereal time to universal time.

Input:
x = Greenwich mean sidereal time (hh.mmss)
y = date (mm.ddyyyy)

If an invalid date or time is given, the current value is used.
Non-existing Gregorian dates will produce an error (Oct 5, 1582 to Oct 14, 1582).

Returns:
x = universal time UT (hh.mmss)
y = universal time UT (° decimal)
z = Time (hh.mmss), input GMST or current time if invalid
t = Date (mm.ddyyyy), input date or current date if invalid
What was the UT at 4h 40m 5.23s GMST on April 22nd 1980?

4.221980 ENTER 4.400523
EXEC FN ➞ 14.3651673 (14h 36m 51.67s) or 219.2153° (in Y)


Find the UT at 7h 18m 8.33s UT on Oct 3, 2001.

10.032001 ENTER 7.180833
EXEC FN ➞ 6.30000 (6h 30m) or 97.5000° (in Y)


Find the UT if the GMST is the current time and date..

-1 ENTER EXEC FN ➞ UT, R↑ ➞ date, R↑ ➞ time
  Surveying  
700 Geodesic Distance
Calculate distance between two locations on Earth, taking into account the Earth's flattening (based on WGS-84 values).
Input (all angles in H.MS format):
x = latitude 2
y = longitude 2
z = latitude 1
t = longitude 1
(use minus sign to differentiate between East/West and North/South)
Returns:
x = geodesic distance (in km)
y = geodesic distance (in mi)
z = geodesic distance (in nmi)
Calculate the geodesic distance between the Observatoire de Paris (France) and the U.S. Naval Observatory at Washington (D.C.), using the following coordinates:
Paris: longitude 2°20'14" East, latitude 48°50'11" North
Washington: longitude 77°03'56" West, latitude 38°55'17" North

2.2014 ENTER 48.5011 ENTER
77.0356 CHS ENTER 38.5517
EXEC FN ➞ 6181 km (= 3841.08 mi = 3337.81 nmi)
  Business  
800 NOM2EFF
Converts nominal annual interest x (in %) rate to effective rate, using y periods.
Compute effective annual rate if nominal annual interest of 6.0% is compounded quarterly:
4 ENTER 6 EXEC FN ➞ 6.14% (effective annual rate)
–800 EFF2NOM
Converts effective annual interest x (in %) rate to nominal rate, using y periods.
Compute nominal annual interest if effective annual rate of 7.7%, compounded monthly, is known:
12 ENTER 7.7 EXEC FN ➞ 7.44% (effective annual rate)
801 Rule of 78's
Interest portion and interest rebate of a finance charge
x = periodic payment number, y = total periods, z = finance charge
Returns: x = interest portion of the xth payment, y = rebate
Calculate interest portion and rebate of the 25th payment of a 30-month loan having a finance charge of $180.
180 ENTER 30 ENTER 25 EXEC FN ➞ 2.32 (interest portion) x≷y ➞ 5.81 (rebate)
810 Bond Price
Given x = decimal annual coupon rate (in %), y = annual yield to maturity (in %), z = days between purchase and maturity), calculates bond price
What is the price of a 4% bond yielding 3% and maturing in 99 days?
99 ENTER 3 ENTER 4 EXEC FN ➞ 100.27
 
 

 

  Advanced Use of SOLAR


SOLAR expects parameters in all primary registers, i.e. R0...R9, and RA...RE.
Results are returned on the stack and in the secondary registers (RS0...RS9).

Parameters
must be passed according to the table at right.

Results are returned as follows:
Register Value Unit
Stack T Local altitude (atmospheric refraction corrected) [degrees]
Stack Z Local sun transit time (solar noon) [fractional hours]
Stack Y Local sunset time (± 30 seconds) [fractional hours]
Stack X Local sunrise time (± 30 seconds) [fractional hours]
RS0 Local azimuth angle (eastward from north) [degrees]
RS1 Local sun right ascension [degrees]
RS2 Local sun declination [degrees]
RS3 Sunrise hour angle [degrees]
RS4 Sunset hour angle [degrees]
RS5 Sun transit altitude [degrees]
RS6 Greenwich sidereal time [degrees]
RS7 Surface incidence angle, as determined by parameters RC and RD (see table at right) [degrees]
RS8 Equation of time (difference between solar apparent and mean time) [minutes]
RS9 Julian day number  


NOTES:
 

Parameters & Error Codes
When "Error" appears, tapping any key reveals a code # indicating the error's cause.
Asterisked parameters, if invalid, will be set to a default value.
  # Reg Value Range
  1 R0 4-digit year -2000 to 6000
  2 R1 2-digit month 1 to12
  3 R2 2-digit day 1 to 31
  4 R3 Observer local hour 0 to 24
  5 R4 Observer local minute 0 to 59
  6 R5 Observer local second 0 to 59
  8 R6 Observer time zone (negative west of Greenwich) -18 to 18 hours
  9 R7 Observer longitude (negative west of Greenwich) -180 to 180 degrees
 10 R8 Observer latitude (negative south of equator) -90 to 90 degrees
 11 R9 Observer elevation -6,500,000 or higher meters
  * RA Annual average pressure 0 to 5000 millibars
  * RB Annual average temperature -273 to 6000 °C
  * RC Surface slope (measured from the horizontal plane) -360 to 360 degrees
  * RD Surface azimuth rotation (measured from south to projection of surface normal on horizontal plane, negative west) -360 to 360 degrees
  * RE Difference between earth rotation time and terrestrial time (typically 67 seconds) -8000 to 8000 seconds
 
Legal notice:
SOLAR is based on The Solar Position Algorithm, Copyright © 2008-2011 Alliance for Sustainable Energy, LLC, and is used by permission.

 

 
 

 

  Using TEXT Helper


Printing text on paper tape involves converting the text to suitable number values (codes) and executing OP TEXT or OP PLOTC operations.

TEXT Helper is an easy-to-use tool for generating the required numbers.


Using OP TEXT


Fetch existing text loads the text currently stored at the indicated location (if any) into the text field.

Alternatively, the generated code may be pasted into the calculator's display (in PRGM mode), or into the listing field of the Card Manager (in RUN mode.)


Using OP PLOTC
Using the value in the X-register, PLOTC prints up to 4 characters positioned anywhere on the paper tape line.
The integer part of the value defines the position (0…20). The alignment buttons may be used to insert the correct values for left, center, or right justification.


TEXT Helper on the iPhone
On RPN-67 SD, TEXT Helper can only be accessed in W/PRGM mode:


Leaving TEXT Helper takes you back to the program listing where you can check and modify the changes.
 


OP TEXT button
You can optionally add the two lines required to output the text, followed by a RTN instruction, to the text storing instructions. Tap the button to turn the lines on and off.


Available TEXT characters

All 3-digit numbers in the range 1 to 255 have been assigned to characters. (Note that 000 is used to denote the end of a string.)

For a list of available characters and their codes you may:

 
 


Copyright © 2024. All rights reserved.