Gibt es einen anderen Kommandozeilen - Rechner an, dass Träger log
, n!
Berechnungen? Zumindest bc
kann ich das nicht, sagte es mir, Fehler zu analysieren
Es ist am besten, wenn ich Skript verwenden könnte, z echo '5!' | program
Gibt es einen anderen Kommandozeilen - Rechner an, dass Träger log
, n!
Berechnungen? Zumindest bc
kann ich das nicht, sagte es mir, Fehler zu analysieren
Es ist am besten, wenn ich Skript verwenden könnte, z echo '5!' | program
Antworten:
bc
unterstützt den natürlichen Logarithmus, wenn er mit dem -l
Flag aufgerufen wird . Sie können das Base-10- oder Base-2-Protokoll damit berechnen:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Ich glaube nicht, dass es eine eingebaute Fakultät gibt, aber das ist einfach genug, um sich selbst zu schreiben:
$ bc
...
define fact_rec (n) {
if (n < 0) {
print "oops";
halt;
}
if (n < 2) return 1;
return n*fact_rec(n-1);
}
fact_rec(5)
120
Oder:
define fact_it (n) {
if (n < 0) {
print "oops";
halt;
}
res = 1;
for (; n > 1; n--) {
res *= n;
}
return res;
}
fact_it(100)
93326215443944152681699238856266700490715968264381621468592963895217\
59999322991560894146397615651828625369792082722375825118521091686400\
0000000000000000000000
Um POSIX-kompatibel zu sein, müssen Sie Folgendes schreiben:
define f(n) {
auto s, m
if (n <= 0) {
"Invalid input: "
n
return(-1)
}
s = scale
scale = 0
m = n / 1
scale = s
if (n != m) {
"Invalid input: "
n
return(-1)
}
if (n < 2) return(1)
return(n * f(n - 1))
}
Das heißt: Name der Einzelzeichenfunktion, nein print
, nein halt
, Klammer erforderlich in return(x)
. Wenn Sie keine Eingabevalidierung benötigen (hier für positive Ganzzahlen), ist es nur:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
genauso 1!=1
. Zumindest sagt das Wikipedia.
Orpie ist der Taschenrechner für Rechner- und Kommandozeilenfreaks. Es emuliert einen modernen HP RPN-Rechner, der natürlich die einzig wahre Berechnungsmethode ist.
Wenn Sie ein Taschenrechner-Häretiker sind, der auf TIs, Casios und dergleichen aufbaut, gibt es viele RPN- Tutorials online, mit denen Sie Ihre Umerziehung beginnen können. Das Orpie-Handbuch wird Ihnen irgendwann von Nutzen sein, sobald Sie die RPN-Denkweise verstanden haben.
5 berechnen! in orpie, geben Sie es, wie Sie es schreiben würde: 5 !. Sie können Enterzwischen ihnen drücken, um sie zuerst 5
auf den Stapel zu schieben , dies ist jedoch nicht erforderlich.
Geben Sie zum Berechnen von Protokoll 10 (5) Folgendes ein 5 Enter ' l o Enter. 5
In diesem Fall müssen Sie das Symbol zuerst auf den Stapel schieben , da der nächste Tastendruck kein Operator ist. Dieses einfache Anführungszeichen wechselt in den Befehlsabkürzungsmodus, in dem Sie mit der Eingabe beginnen können log10
, die Sie nur anhand der ersten beiden Zeichen eindeutig identifizieren können. ( l
Alleine erhalten Sie ln
stattdessen die natürliche Protokollfunktion .)
Wie bei jedem RPN-Rechner können Sie mit Orpie sehr schnell und mit ein wenig Übung arbeiten.
Orpie ist auf Lager Ubuntu Repos. FreeBSD enthält es in Ports, as math/orpie
. Unter OS X können Sie es über Homebrew installieren . Pakete von Drittanbietern sind möglicherweise für andere Betriebssysteme verfügbar. Das Erstellen aus dem Quellcode ist möglicherweise etwas mühsam, da es in OCaml geschrieben ist und wahrscheinlich keine OCaml-Entwicklungsumgebung installiert ist. Es ist jedoch nicht besonders schwierig, eine Einrichtung zu finden.
Es gibt immer GNU Octave , die Emacs von Befehlszeilenrechnern (wenn Sie eine vollständige Entwicklungsumgebung und Programmiersprache in Ihren Rechner integriert haben möchten, und Tausende von optionalen Add-Ons)
oder R, wenn Statistiken eher dein Ding sind.
Ich verwende meistens nur bc -l
, um die Standard-Mathematikbibliothek zu laden ... ich habe sogar bc
Alias zu bc -l
. Siehe Mat Antwort für Informationen über eine Fakultätsfunktion definieren .... obwohl der bc
Mann Seite definiert sie als:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
Das Prüfen auf <= 1 anstelle von == 1 verhindert eine Endlosschleife, wenn Sie eine negative Zahl (sollte ein Fehler sein) oder Null (gültig) eingeben.
Mein Favorit ist das leichte, einfache W-Calc
.
http://w-calc.sourceforge.net
Sie müssen nicht im Handbuch nachschauen oder allgemeine Funktionen manuell neu erstellen, wie Sie es mit tun bc
- die Befehle sind größtenteils genau das, was Sie erwarten. Geben Sie einfach das ein, was Sie möchten, und es funktioniert. Testen gemäß Ihrer Frage - in der Tat log()
und n!
arbeiten wie erwartet.
(Zugegeben, ich habe noch nie von Orpie gehört - sehr wohl eine bessere Option.)
Wenn Sie Mac-Ports haben:
$ sudo /opt/local/bin/port install orpie