Respuestas:
bc
admite el logaritmo natural si se invoca con la -l
bandera. Puede calcular el registro de base 10 o base 2 con él:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
No creo que haya un factorial incorporado, pero es bastante fácil de escribir usted mismo:
$ 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
O:
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
Para cumplir con POSIX, deberá escribirlo:
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))
}
Es decir: nombre de función de un solo carácter, no print
, no halt
, se requiere paréntesis en return(x)
. Si no necesita validación de entrada (aquí para números enteros positivos), es solo:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
igual que 1!=1
. Al menos, eso es lo que dice Wikipedia.
Orpie es la calculadora para calculadores y geeks de línea de comando. Emula una calculadora HP RPN moderna, que por supuesto es la única forma real de calcular.
Si usted es un calculador hereje, criado en TI, Casios y demás, hay muchos tutoriales RPN en línea con los que puede comenzar su reeducación. El manual de Orpie finalmente será de alguna utilidad para usted, una vez que obtenga la forma de pensar RPN.
Para calcular 5! en Orpie, sólo tiene que escribir que a medida que iba a escribir que: 5 !. Puede presionar Enterentre ellos para empujar 5
primero a la pila, pero no es necesario.
Para calcular el registro 10 (5), escriba 5 Enter ' l o Enter. En 5
este caso, primero debe empujar la pila hacia la pila, ya que la siguiente pulsación de tecla no es un operador. Ese carácter de comillas simples ingresa al modo de abreviatura de comando, que le permite comenzar a escribir log10
, que puede identificar únicamente con los dos primeros caracteres. ( l
solo obtienes la función de registro natural ln
).
Como con cualquier calculadora RPN, puedes ser realmente rápido con Orpie, con un poco de práctica.
Orpie está en los repositorios de Ubuntu. FreeBSD lo incluye en Puertos, como math/orpie
. En OS X, puede instalarlo a través de Homebrew . Los paquetes de terceros pueden estar disponibles para otros sistemas operativos. Construir desde la fuente puede ser un poco complicado, ya que está escrito en OCaml , y probablemente no tenga instalado un entorno de desarrollo OCaml. Sin embargo, configurar uno no es particularmente difícil.
Siempre hay GNU Octave , los emacs de las calculadoras de línea de comandos (para cuando quieres un entorno de desarrollo completo y un lenguaje de programación integrado en tu calculadora, y miles de complementos opcionales)
o R si las estadísticas son más tuyas.
Principalmente solo uso bc -l
para cargar la biblioteca matemática estándar ... Incluso me he bc
alias bc -l
. Consulte la respuesta de Mat para obtener información sobre bc
cómo definir una función factorial ... aunque la página del manual la define como:
define f (x) {
if (x <= 1) return (1);
return (f(x-1) * x);
}
La comprobación de <= 1 en lugar de == 1 evita un bucle sin fin si le da un número negativo (debería ser un error) o cero (válido).
Mi favorito es el ligero, simple W-Calc
.
http://w-calc.sourceforge.net
No tiene que buscar en el manual o volver a crear manualmente funciones comunes, como lo hace con bc
: los comandos son en su mayoría exactamente lo que esperaría, así que simplemente escriba lo que desee y simplemente funciona. Pruebas según su pregunta, de hecho, log()
y n!
trabaje como se espera.
(Es cierto que no he oído hablar de Orpie, muy bien puede ser una mejor opción).
Si tiene puertos Mac:
$ sudo /opt/local/bin/port install orpie