Mat*_*Mat 22
bc
如果使用-l
标志调用,则支持自然对数。您可以使用它计算 base-10 或 base-2 日志:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Run Code Online (Sandbox Code Playgroud)
我不认为有一个内置的阶乘,但这很容易让你自己写:
$ 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
Run Code Online (Sandbox Code Playgroud)
或者:
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
Run Code Online (Sandbox Code Playgroud)
要符合 POSIX,您需要编写它:
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))
}
Run Code Online (Sandbox Code Playgroud)
即:单字符函数名,no print
,no halt
, 中需要括号return(x)
。如果你不需要输入验证(这里是正整数),它只是:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
Run Code Online (Sandbox Code Playgroud)
Orpie是计算器和命令行极客联合体的计算器。它模拟了经典的 HP RPN 计算器,这当然是唯一真正的计算方法。我们都知道。
如果您是一个计算器异端,是在 TI、Casios 等环境下长大的,那么网上有很多 RPN 教程,您可以通过这些教程开始您的再教育。一旦您掌握了 RPN 的思维方式, Orpie 手册最终会对您有所帮助。
计算 5! 在 Orpie 中,只需按您的书写方式键入:5 !。您可以Enter在它们之间按一下以5
先压入堆栈,但这不是必需的。
要计算 log 10 (5),请输入5 Enter ' l o Enter。在这种情况下,您必须5
先将 推入堆栈,因为下一个击键不是运算符。该单引号字符进入命令缩写模式,您可以开始键入log10
,您可以仅使用前两个字符来唯一标识它。(相反l
,单独获得自然对数函数ln
。)
与任何 RPN 计算器一样,通过一些练习,您可以非常快地使用 Orpie。
Orpie 位于 Ubuntu 库存存储库中。FreeBSD 将其包含在 Ports 中,作为math/orpie
. 在 macOS 上,您可以通过Homebrew安装它。第三方软件包可能适用于其他操作系统。从源代码构建可能有点麻烦,因为它是用OCaml编写的,而且您可能没有安装 OCaml 开发环境。不过,设置一套并不是特别困难。