RPN is a small reverse polish (programmable) calculator. It has 4 Stack levels and was written by myself in 2015. I use it every day to crunch some numbers on the commandline. You can invoke RPN from the terminal and let it parse its arguments or start the program and use it interactively.
This cute little piece of written go code is free software by any means. Do what you what you want with. Enjoy it. Change it and distribute it as long as you mention my name somewhere. Feel free to contact me.
https://sebastiankind.de/post/terminalrechner
and
https://github.com/zeppel13/rpn/blob/master/howto.org
The Link to my blog offers a German description.
- Install Go any version should do fine
- compile rpn with
cd ./rpn
go build
- test it
rpn 3 3 a 5 d
should give you 1.20
If you wish to compile RPN for older computers e.g. with a Pentium II or anything else which has 387 compatible floatingpoint processor, you need to set this in order to compile and run it correctly. Tested for a Pentium II on Windows XP and Debian Linux. Somewhere on my old computers HDD should exist a small C Port for a 286 Personal Computer. But it shouldn't be too difficult to reprogram this software in any language by yourself.
GO386=387 go build
Es lohnt sich in den Quelltext zu schauen.
Befehl | Funktion |
---|---|
[Enter] | Befehl bearbeiten |
sw | Registertauschen(1<->2) |
r | Regiser rollen |
drop | Letztes Register löschen |
reset | Alle Register löschen |
Operatoren und Operanden werden in eine Zeile eingegeben und mit [Enter] abgearbeitet. Es lassen sich die Eingaben zum Erhalt der Übersichtlichkeit oder aus praktischen Gründen auch nacheinander jeweils mit Enter getrennt eingeben.
Die Eingaben erfolgen nach dem Prinzip der Umgekehrten Polnischen Notation (UPN bzw in Englisch RPN) Wikipedia und YouTube helfen hier.
3 [Enter] = 3
3 [Enter] 5 [Enter] sw [Enter] = 3
Register | Wert | Fun Facts |
3 | 0 | |
2 | 0 | |
1 | 5 | mit sw kann man [1] und [0] tauschen |
0 | 3 |
Rechenoperationen, die sich auf das erste oder die ersten Register beziehen.
Befehl | Funktion (Erklärung) |
---|---|
a | Addieren |
s - | Subtrahieren |
d / | Dividieren |
m \* | Muliplizieren |
mod % | Rest bei Division |
ux | Kehrwert bilden |
Beispiel:
3 5 a = 8
7 6 m = 42
5 ux = 0.2
7 4 mod = 3
(3*(4-2))
4 2 s 3 m = 6
(34/5)*(3-4*2)
34 5 d 3 4 2 m s m = -34
3+4+3+6+9
3 4 a 3 a 6 a 9 a = 25
Konstante |
---|
e |
pi |
Trigonometrie |
---|
sin |
cos |
tan |
asin |
acos |
atan |
Beispiel:
Komm Standardkram.
30 sin = 0.5
0 sin = 0
0 cos = r
Logarithmen | Erklärung |
---|---|
lg | Log zur Basis 10 |
ln | Log zur Bais e |
log | log von [1] zur Basis in [0] |
Beispiel:
1024 2 log = 10
100 lg = 2
Potenzen | Erklärung |
---|---|
p | Potenzieren (basis[1] expont[0] p) |
x2 | Quadrieren |
sqrt | Quadratwurzel |
cbrt | Kubikwurzel |
xrt | Nte-Wurzel ([1] [0] xtr) |
Beispiel:
2 10 p = 1024
10 2 p = 100
16 sqrt = 4
27 cbrt = 3
256 4 xrt = 4
Befehl | Funktion |
pq | Nullstellen mit pq-Formel errechnen |
[1] [0] pq | |
distance | Orthodromenstrecke berechnen |
3 4 pq = -1.5 in [1] und -1.5 [0]
Register | Was? |
---|---|
3 | Breite1 |
2 | Länge1 |
1 | Breite2 |
0 | Länge2 |
+48 +10 +40 -89 distance = 7403 km (bis zu Joseph)
Befehl | Funtktion, Paramenter(Freunde) |
-> | [Zahl oder Stack] -> [Variabelname] |
get | get [Variabelname] |
show | Alle Variabeln zeigen |
3 -> myvar 13 -> primzahl
3 in die Variabel myvar speichern und 13 in primzahl speichern
get primzahl = 13
show
myvar : 3 primzahl : 13
Befehl | Funtktion, Paramenter(Freunde) | Fun Facts |
store | store [Dateiname] | Stack(Register) und Variablen in Textdatei speichern |
run | run [Dateiname] | Stack und Variablen aus Textdatei laden |
und Rechnungen durchführen | ||
stop | beendet Programm |
Befehl | Funtktion, Paramenter(Freunde) |
---|---|
view | Toggle Stackanzeige |
Stack einmalig zeigen | |
bin | Binäres (gerundetes) Ergbnis |
Es kann ab und an auch etwas schiefgehen. Die Benutzung ist frei und vollkommen eigenverantwortlich.