Gibt es einen anderen Kommandozeilen - Rechner an, dass Träger log, n!Berechnungen? Zumindest bckann 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 bckann ich das nicht, sagte es mir, Fehler zu analysieren
Es ist am besten, wenn ich Skript verwenden könnte, z echo '5!' | program
Antworten:
bcunterstützt den natürlichen Logarithmus, wenn er mit dem -lFlag 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!=1genauso 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 5auf den Stapel zu schieben , dies ist jedoch nicht erforderlich.
Geben Sie zum Berechnen von Protokoll 10 (5) Folgendes ein 5 Enter ' l o Enter. 5In 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. ( lAlleine erhalten Sie lnstattdessen 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 bcAlias zu bc -l. Siehe Mat Antwort für Informationen über eine Fakultätsfunktion definieren .... obwohl der bcMann 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