Est - il un autre calculateur de ligne de commande qui prend en charge log
, les n!
calculs? Au moins, bc
je ne peux pas faire ça, ça m'a dit une erreur d'analyse
Il vaut mieux utiliser un script, par exemple echo '5!' | program
Est - il un autre calculateur de ligne de commande qui prend en charge log
, les n!
calculs? Au moins, bc
je ne peux pas faire ça, ça m'a dit une erreur d'analyse
Il vaut mieux utiliser un script, par exemple echo '5!' | program
Réponses:
bc
prend en charge le logarithme naturel s'il est invoqué avec l' -l
indicateur. Vous pouvez calculer le journal base-10 ou base-2 avec lui:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Je ne pense pas qu'il y ait une factorielle intégrée, mais c'est assez facile de vous écrire:
$ 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
Ou:
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
Pour être conforme à POSIX, vous devez l'écrire:
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))
}
C'est-à-dire: nom de la fonction à un caractère, non print
, non halt
, parenthèses requises dans return(x)
. Si vous n'avez pas besoin de validation d'entrée (ici pour les nombres entiers positifs), c'est juste:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
tout comme 1!=1
. C'est du moins ce que dit Wikipédia.
Orpie est la calculatrice pour les geeks calculatrice et ligne de commande. Il émule une calculatrice HP RPN moderne, qui est bien sûr la seule vraie façon de calculer.
Si vous êtes un calculateur hérétique, élevé sur les TI, les Casios, etc., il existe de nombreux tutoriels RPN en ligne avec lesquels vous pouvez commencer votre rééducation. Le manuel Orpie vous sera éventuellement utile une fois que vous aurez compris la façon de penser du RPN.
Pour calculer 5! dans orpie, il suffit de taper comme vous rédigeriez: 5 !. Vous pouvez appuyer Enterentre eux pour pousser d'abord 5
sur la pile, mais ce n'est pas nécessaire.
Pour calculer le journal 10 (5), tapez 5 Enter ' l o Enter. Vous devez d'abord pousser le 5
sur la pile dans ce cas, car la prochaine frappe n'est pas un opérateur. Ce caractère guillemet simple entre en mode abréviation de commande, ce qui vous permet de commencer à taper log10
, que vous pouvez identifier uniquement avec les deux premiers caractères uniquement. ( l
seul, vous obtenez la fonction de journal naturel à la ln
place.)
Comme avec n'importe quelle calculatrice RPN, vous pouvez être très rapide avec Orpie, avec un peu de pratique.
Orpie est dans le référentiel Ubuntu. FreeBSD l'inclut dans les ports, comme math/orpie
. Sous OS X, vous pouvez l'installer via Homebrew . Des packages tiers peuvent être disponibles pour d'autres systèmes d'exploitation. La construction à partir des sources peut être un peu une corvée, car elle est écrite en OCaml , et vous n'avez probablement pas installé un environnement de développement OCaml. Cependant, l'installation d'une configuration n'est pas particulièrement difficile.
Il y a toujours GNU Octave , les emacs des calculatrices en ligne de commande (pour quand vous voulez un environnement de développement complet et un langage de programmation intégré à votre calculatrice, et des milliers de modules complémentaires optionnels)
ou R si les statistiques sont plus votre truc.
Je l'utilise principalement bc -l
pour charger la bibliothèque mathématique standard ... J'ai même un bc
alias pour bc -l
. Voir la réponse de Mat pour plus d'informations sur la définition d'une fonction factorielle .... bien que la bc
page de manuel la définit comme:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
La vérification de <= 1 plutôt que == 1 empêche une boucle sans fin si vous lui fournissez un nombre négatif (devrait être une erreur) ou zéro (valide).
Mon préféré est le poids léger, simple W-Calc
.
http://w-calc.sourceforge.net
Vous n'avez pas besoin de regarder dans le manuel ou de recréer manuellement des fonctions communes, comme vous le faites avec bc
- les commandes sont généralement exactement ce que vous attendez, alors tapez simplement ce que vous voulez et cela fonctionne. Test selon votre question - en effet log()
et n!
fonctionne comme prévu.
(Certes, je n'ai pas entendu parler d'Orpie - très bien peut-être une meilleure option.)
Si vous avez des ports Mac:
$ sudo /opt/local/bin/port install orpie