Command line calculator using reverse polish notation
Decimal, hexadecimal, binary and octal number are supported
As a command line tool: pol
~$ pol
Reverse polish notation calculator
>5 10 * dec
50
>0xA 0x6 + hex
0x10
>q //quit the program
~$
Instructions are below
pol can also be use as a module
import rpn_calc
cal = rpn_calculator.Calculator()
cal.evaluate("1 2 + dec")
# print 3
pol can be install from pip
pip install rpn-calc
If you want to install from a source distribution, extract the tarball and run the following command
python setup.py install
This README is the Documentation
The code is on github
You can write your own command
By default commands from file ~/pol.yml (if exists) are add to the calculator
You can add other files with the flag -f/--file
Config files are written in YAML
- shortcut: shortcut to commands (see example below)
- rounding: parameter used to round number (default: 0)
shortcut:
- double = 2 * # double the last value of the stack
- 10* = 10 switch ** # same as 10 {x} **
rounding: 3
Command must be on the format {name_of_command = command}
usage: pol [-h] [-v] [-l] [--ignore-local-config] [-f FILE [FILE ...]]
A RPN calculator written in python
Support decimal, hexadecimal, binary and octal
optional arguments:
-h, --help show this help message and exit
-v, --version show the version number and exit
-l, --list list all commands available and exit
--ignore-local-config
don't add commands from ~/.pol
-f FILE [FILE ...], --file FILE [FILE ...]
file with customs commands
+
: Take 2 numbers from the stack, add them and put the result in the stack
-
: Take 2 numbers from the stack, substracte them and put the result in the stack
*
: Take 2 numbers from the stack, mul them and put the result in the stack
/
: Take 2 numbers from the stack, divise them and put the result in the stack
//
: Take 2 numbers from the stack, divise them and put the integer result in the stack
%
: Take 2 numbers from the stack, divise them and put the remainder in the stack
**
: Take 2 numbers from the stack, apply power and put the result in the stack
sqrt
: Replace the last number in the stack with the square root of itself
exp
: Apply e**x to the last number of the stack
log10
: Apply log10 to the last number of the stack
log2
: Apply log2 to the last number of the stack
ln
: Apply natural logarithm to the last number of the stack
and
: Take 2 numbers from the stack, apply a bitwise "and" and put the result in the stack
or
: Take 2 numbers from the stack, apply a bitwise "or" and put the result in the stack
xor
: Take 2 numbers from the stack, apply a bitwise "xor" and put the result in the stack
<<
: Take 2 numbers from the stack, apply a left shift and put the result in the stack
>>
: Take 2 numbers from the stack, apply a right shift and put the result in the stack
abs
: Make absolute the last value of the stack
inv
: Inverse the last number of the stack
neg
: Change the sign of the last number in the stack
sin
: Replace the last number in the stack with the sine of itself (measured in radians)
cos
: Replace the last number in the stack with the cosine of itself (measured in radians)
tan
: Replace the last number in the stack with the tangent of itself (measured in radians)
asin
: Replace the last number in the stack with the arc sine of itself (measured in radians)
acos
: Replace the last number in the stack with the arc cosine of itself (measured in radians)
atan
: Replace the last number in the stack with the arc tangent of itself (measured in radians)
atan2
: Take 2 numbers from the stack, apply a atan2 function and put the result in the stack
sinh
: Replace the last number in the stack with the hyperbolic sine of itself
cosh
: Replace the last number in the stack with the hyperbolic cosine of itself
tanh
: Replace the last number in the stack with the hyperbolic tangent of itself
asinh
: Replace the last number in the stack with the asinh of itself
acosh
: Replace the last number in the stack with the acosh of itself
atanh
: Replace the last number in the stack with the atanh of itself
torad
: Convert the last number from degree to radian
todeg
: Convert the last number from radian to degree
switch
: Switch the last 2 numbers of the stack
del
: Delete the last number in the stack
copy
: Copy the last number of the stack and add it to the stack
pi
: Add pi to the stack
tau
: Add tau to the stack
e
: Add e to the stack
sum
: Take all the number of the stack and add the sum
fact
: Replace the last number in the stack with its factorial
round
: Round the last number in the stack
ave
: Take all the number of the stack and add the average
dec
: Print the last number of the stack and remove it
hex
: Print in hexadecimal format the last number of the stack and remove it
bin
: Print in binary format the last number of the stack and remove it
oct
: Print in octal format the last number of the stack and remove it
ratio
: Print in integer ratio format the last number of the stack and remove it
s
: Print the stack
clear
: Empty the stack
back
: Put back on the stack the last value that was printed
help
: Print help; Same as pol --list
q
: Quit the program
MIT