bc
поддерживает натуральный логарифм, если вызывается с -l
флагом. С его помощью вы можете рассчитать журнал base-10 или base-2:
$ bc -l
...
l(100)/l(10)
2.00000000000000000000
l(256)/l(2)
8.00000000000000000007
Я не думаю, что есть встроенный факториал, но это достаточно легко написать самостоятельно:
$ 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
Или:
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
Чтобы быть 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))
}
То есть: имя функции из одного символа, нет print
, нет halt
, скобки требуются в return(x)
. Если вам не нужна проверка ввода (здесь для положительных целых чисел), это просто:
define f(n) {
if (n < 2) return(1)
return(n * f(n - 1))
}
0!=1
, просто так1!=1
. По крайней мере, так говорит Википедия.Orpie - это калькулятор для фанатов калькулятора и командной строки. Он эмулирует современный калькулятор HP RPN, который, конечно, является единственным верным способом расчета.
Если вы еретик-калькулятор, выросший на TI, Casios и т. Д., Есть много онлайн- учебников по RPN, с которых вы можете начать свое перевоспитание. Руководство Orpie в конечном итоге пригодится вам, как только вы научитесь думать RPN.
Чтобы вычислить 5! в Orpie, просто введите его , как вы бы писать: 5 !. Вы можете нажать Enterмежду ними, чтобы
5
сначала поместить их в стек, но это не обязательно.Чтобы вычислить журнал 10 (5), введите 5 Enter ' l o Enter. В этом случае вы должны
5
сначала поместить стек в стек, поскольку следующее нажатие клавиши не является оператором. Этот символ одинарной кавычки входит в командный режим аббревиатуры, который позволяет начать ввод текстаlog10
, который можно однозначно идентифицировать только по первым двум символам. ( вместо этогоl
вы получите функцию естественного журналаln
.)Как и в любом другом калькуляторе RPN, с Orpie вы можете по- настоящему быстро справиться с практикой.
Orpie есть в репозитории Ubuntu. FreeBSD включает его в Ports, as
math/orpie
. На OS X вы можете установить его через Homebrew . Сторонние пакеты могут быть доступны для других ОС. Сборка из исходного кода может быть немного трудной, поскольку она написана на OCaml , и у вас, вероятно, не установлена среда разработки OCaml. Однако настроить его не особенно сложно.источник
Всегда есть GNU Octave , emacs калькуляторов командной строки (для тех случаев, когда вам нужна полная среда разработки и язык программирования, встроенный в калькулятор, и тысячи дополнительных дополнений)
или R, если вам больше нравится статистика.
Я в основном просто использую,
bc -l
чтобы загрузить стандартную математическую библиотеку ... Я даже наbc
нее ссылалсяbc -l
. См. Ответ Мэта для информации об определении факториальной функции .... хотяbc
страница руководства определяет это как:Проверка на <= 1, а не == 1 предотвращает бесконечный цикл, если вам случится передать ему отрицательное число (должно быть ошибкой) или ноль (допустимо).
источник
Мой любимый это легкий, простой
W-Calc
. http://w-calc.sourceforge.netВам не нужно заглядывать в руководство или заново создавать обычные функции, как вы это делаете
bc
- команды в основном соответствуют вашим ожиданиям, поэтому просто введите то, что вы хотите, и это просто работает. Тестирование в соответствии с вашим вопросом - действительноlog()
&n!
работает, как ожидалось.(По общему признанию я не слышал об Орпи - очень хорошо может быть лучшим вариантом.)
источник
Совершенно излишне, но интерпретаторы языка программирования в конце концов являются калькуляторами командной строки:
источник
Если у вас есть порты Mac:
источник