RPN Calculator (1.6.6)
by Chris Mondok
Help
Reverse polish what?
Reverse polish notation is an alternative way of writing equations. In standard notation, you may have the expression (5+3)*2. This cannot be written without the use of parentheses. In reverse polish notation, numbers are added to a stack, and then "popped" off of the stack when an operation is performed. The example equation could be written in reverse polish notation as "2 3 5 + *". This may seem confusing at first, but it can lead to speedy entry of complicated equations.
How to use this calculator
Glad I haven't scared you off yet.
To enter a number, just type the numbers anywhere. Use the n key for negative values. To push it on the stack (that is, to put it at the beginning), either press the enter key, or tap the green arrow button. To pop a number off of the stack (that is, to remove it from the beginning), tap the red arrow button. It will be put into the input field. To perform an operation, tap the operation's button. The result will then be pushed onto the stack. Many operations use two values, so they will pop two values off of the stack.
Keys
There are a number of key bindings.

- +, -, *, and / perform the corresponding operation.
- Enter: Push value
- Meta+Backspace: Pop value
- %: Divide input by 100
- n: Insert a negative sign. This is because the '-' key performs the minus operation.
- m: run the currently loaded macro

To change key bindings, open preferences, and then tap "Customize keys." Tap a row, and press the key you wish to bind. To remove a bind, type backspace. To restore defaults for that function, press enter. Keys can also be bound to macros. First, save the macro. Next, open preferences, choose "Customize keys", and scroll to the bottom of the list.
Preferences
Input is top of stack
If this option is enabled, any value that is in the input field will be pushed before performing an operation.
Compact view
This option shows four rows of buttons on the screen at once, instead of the usual two.
Precision
This setting determines the maximum number of decimal places to display.
Reverse root order
If this option is enabled, the degree of the root is pushed after the value you would like to find the root of.
Advanced usage
There are more operators than what you see when the scene starts. Constants can be accessed by tapping the 'C' key on the math field. To define a custom constant, push a value on the stack, invoke the app menu, and tap "save constant." These can be deleted at the preferences screen. Swiping left or right on the operators group will switch to a different group of operators. The radix can be changed with the list selector on the third page of operations. Currently, when using a radix other than decimal, you are unable to input decimals. This is because parseFloat does not operate in non-base-ten. If there is enough demand, I will add this in the future.
Macros
(v 1.5.5)
Macros allow for the automation of repetitive tasks. You define macros by recording them, and play them back by tapping 'run', or by binding keys to them. Additionally, macros can be saved and loaded for later use. As an example, suppose we wanted to create a macro to convert an angle in DMS to Degrees. Assuming that the value is currently on the stack, pushed in the order of Degrees, Minutes, Seconds, we can record this macro very easily. Start by entering the angle you wish to convert Choose "start recording macro" from the app menu. Enter 60, press divide, enter 60, press divide again, and choose "Stop recording macro". Now, when you run the macro, the calculator will "play back" the actions that you took while recording. This can be saved for use later by choosing "save macro" from the app menu. You will be prompted for a name. To load it later, choose "manage macros", and tap on the macro you wish to load.
About stacks
A stack is a data structure which holds a number of values. These values are put on to the stack by being "pushed", and removed from the stack by being "popped." Popping a value off of the stack returns its value. When you push a sequence of values onto the stack, they will be popped in reverse order (A stack is a first in, last out data structure.) For example, pushing "3", "5", and "8" will yield the stack "8, 5, 3", as the values are placed on the top of the stack as they are added. If you would like to read more about stacks, there is a good article on the wikipedia, although it may be a little too technical for some.
Contact
Need help with this app?
Have some suggestions?
Though of a better name for my app?
Seriously, anything at all (well, keep it relevant...)!