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 HP67/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 RPN67 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 triplebeep 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 timeout occurs.
If the sound is suppressed by setting its repeat number to 0, no timeout 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 F4F9 (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 4level stack.
If the stack is full, the oldest register set is lost.


–5 
POP A..E
Retrieves registers A..E from the internal 4level 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.


–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,
Tstatistics, skewness, and kurtosis to the stack.
The previous xvalue is saved in LastX.

x = ∑x^{2} , y = ∑(xy)^{2}y , z = ∑x^{3}y , t = ∑x^{4}

11 
P ≷ NonStat
Swaps primary and nonstatistical 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 xvalue is saved in LastX.


13 
PUSH Registers
Puts primary registers R0..R9 and secondary registers RS0..RS9 on an internal 4level 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 4level stack.
The oldest level gets copied to the next level (like T to Z on the regular stack.)


15 
Get Haptics
Retrieves the current haptic feedback level, where:
0 = no feedback
1 = light
2 = medium
3 = heavy


–15 
Set Haptics
Sets the current haptic feedback level, where:
0 = no feedback
1 = light
2 = medium
3 = heavy
For other values, the command is simply 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 of in the device settings

20 
Print Date
Prints the localized date on the paper tape (rightjustified).
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 (rightjustified).
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 (rightjustified).
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.

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

If executed on an iPad Pro running iOS 10.3.3:
EXEC FN → prints iPad Pro 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 predefined 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 000value 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 000value ends the string)
80 EXEC FN → text at R.80 is ready for printing
Print text,
e.g. result 152.75 → αβ: 152.75

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 autoexecuting 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 autoload 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 writeprotected.)
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 writeprotected
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 lettercase.)
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 writeprotected

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+y1
(where x is any integer between 0 and 1,000,000y+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.


80 
Change Info Display (RPN97 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 RPN67. 
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 
Autoexec Sound
Turns sound on loading autoexecuting 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 x^{2} 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) = x^{x} between 0 and 1
Use LBL A to store the function (in W/PRGM mode):
LBL A y^{x} 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 e^{x2+7x30} = 1
Use LBL 1 to store the function (in W/PRGM mode):
LBL 1 x^{2} x≷y 7 × + 30 – e^{x} 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 
RungeKutta 1
Finds solution of a firstorder ordinary differential equation by applying the explicit fourthorder RungeKutta 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 (x_{0},y_{0}) satisfying y_{0} = y(x_{0}) 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 x_{0} + n × increment (n integer) exceeds the desired x value.
The usersupplied 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 = xvalue of starting point x_{0}
Register D = yvalue of starting point y_{0}
x = xvalue at which y(x) is to be found
Output:
x = xvalue of function value y(x), i.e. the first value x_{0} + n × increment
exceeding the desired xvalue
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 x_{0} = 0, y_{0} = y(0) = 1
y' = y has an exact solution: y = e^{x} + C (C = any constant).
By choosing the starting point (0,e^{0}=1), we should get the function y(x) = e^{x} 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 = e^{x} at (1,e) is e.
Check accuracy:
e^{x} %CH → correct result is 0.000077% higher
Find e^{2.66}, using h = 0.01 :
0.01 STO B 2.66
Execute:
EXEC FN → x = 2.66, y = 14.2962891
Check accuracy:
e^{x} %CH → correct result is 0.000000022% higher
2) Solve at x = 1.5: y' + 0.7y = 2x, with x_{0} = 0, y_{0} = 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.7x1)]

–102 
RungeKutta 2
Finds solution of a secondorder ordinary differential equation by applying the explicit fourthorder RungeKutta 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 (x_{0},y_{0},y_{0}')
satisfying y_{0} = y(x_{0}) and y_{0}' = y'(x_{0}) 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 x_{0} + n × increment (n integer) exceeds the desired x value.
The usersupplied 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 = xvalue of starting point x_{0}
Register D = yvalue of starting point y_{0}
Register E = y'value at starting point x_{0},y_{0}
x = xvalue at which y(x) is to be found
Output:
x = xvalue of function value y(x), i.e. the first value x_{0} + n × increment
exceeding the desired xvalue
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 x_{0} = 0, y_{0} = y(0) = 0, y_{0}' = y'(0,0) = 0
The function to store is y" = x(1 – y') / (1 – x^{2})
Use LBL a to store the function (in W/PRGM mode):
LBL a RCL – . T x≷y × LASTx x^{2} 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, y_{0}', 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:
a_{11}x_{1} + a_{12}x_{2} + … = b_{1} in registers R.01…R.09, with b_{1} in R.00
a_{21}x_{1} + a_{22}x_{2} + … = b_{2} in registers R.11…R.19, with b_{2} in R.10
...
Set x = number of equations
On return: Solutions x_{1}, x_{2}, ... in registers R1, R2, ...

Solve this system of 4 equations in 4 unknowns:
2x_{1}  3x_{2} + 5x_{3}  x_{4} = 2
5x_{1} + 7x_{2} + x_{3} + x_{4} = 6
5x_{1}  4x_{2}  2x_{3} + 8x_{4} = 8
11x_{1} + 6x_{2} + 5x_{3} 8x_{4} = 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 ➞ x_{1} = 2, x_{2} = 1, x_{3} = 1, x_{4} = 2 (in R1..R4)

106 
Quartic Equation (aka Biquadratic equation)
Finds all solutions of the equation ax^{4} + bx^{3} + cx^{2} + dx + e = 0.
Input: a..e ➞ registers A..E.
Results may be complex and are stored as follows:
x_{1} = R1 + RS1i, x_{2} = R2 + RS2i, x_{3} = R3 + RS3i, x_{4} = R4 + RS4i
x = result type (see info field of function)

Find the roots of x^{4} + 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 nonreal roots:
x_{1} = 0.7245, x_{2} = 1.2207, x_{3,4} = 0.2481 ± 1.0340i
Verify solution x_{3}:
CPLX RCL 3 x^{2} x^{2} 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:
a_{11}x_{1} + a_{12}x_{2} + … = b_{1} in registers R.01…R.09, with b_{1} in R.00
a_{21}x_{1} + a_{22}x_{2} + … = b_{2} in registers R.11…R.19, with b_{2} 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 = LL^{T} (L^{T} = transpose of L).
To verify the result, perform the following operations:
MAT T 'Transpose L
MAT STO 'Store L^{T} in R.91..R.99
MAT T 'Transpose L^{T} to revert to L
MAT MUL 'Multiply L by its transpose L^{T}
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'scomplement of x are counted, including the sign bit.
In this case, x is treated as a 64bit 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 
ArithmeticGeometric Mean
Arithmeticgeometric 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 × 10^{97}.

Examples:
x = 5 → 4.7875, (e^{4.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 10^{x} →
x = 2.8242, y = 456753 (100,000! = 2.8242 × 10^{456753})

153 
LN(1+x)
Highprecision 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 
e^{x}–1
Highprecision 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·e^{x}.
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 n^{th} 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 r_{1} = 5 and top radius r_{2} = 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 r_{1} = 5 and top radius r_{2} = 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·10^{5} m/s (velocity)
2.4369·10^{14} Hz (frequency)
To convert the energy from eV into J, select the builtin 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·10^{15} 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 
WyeDelta 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 
DeltaWye 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 Ω, 753.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.430.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.
Nonexisting 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.
Nonexisting 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.
Nonexisting 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.
Nonexisting 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 WGS84 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 x^{th} payment, y = rebate 
Calculate interest portion and rebate of the 25th payment of a 30month 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
