Bc

bc (basic calculator) — интерактивный интерпретатор Си-подобного языка, позволяет выполнять вычисления с произвольно заданной точностью. Часто используется как калькулятор в командной строке UNIX-подобных операционных систем. Традиционная реализация bc была оболочкой к непосредственно калькулятору dc, принимавшему выражения в обратной польской записи, и выполняла преобразование из инфиксной записи в обратную польскую. Современная версия GNU bc реализована в качестве отдельной программы.

Синтаксис команды 
 bc [ -hlwsqv ] [long-options] [  file … ]

 -l : вызывает стандартную библиотеку математических функций.
 -w : выводит предупреждения по поводу Posix — расширений bc.
 -s : использует язык Posix bc.
 -q : не печатает обычного приветствия bc.
 -v : печатает номер версии и завершает программу.
 -h : вызывает справку по bc.

Операторы и ключевые слова 
Большинство операторов bc (кроме ^) повторяют аналогичные операторы языка Си.

 +,-,*,/ : сложение, вычитание, умножение, деление
 % : нахождение остатка
 ^ : возведение в степень
 sqrt(i) : извлечение квадратного корня из числа i
 <, >, <=, >=, !=, == : сравнение
 = : присваивание
 ++, -- : инкремент, декремент
 +=, -=, *=, /=, ^=, %= : присваивание с вычислением
 scale = i : устанавливается точность вычисления, i – количество цифр после запятой 
 ibase = i : установка основания системы счисления для входных данных, где i является
             базисом (2 <= i <= 16)
 obase = i : установка основания системы счисления для выходных данных
 last : Вывод последнего вычисленного значения

 if(E)[S1…] else [S2…] : оператор выбора, если E истина выполняется S1 если нет S2
 while(E)[S…] : оператор цикла, выполняет операторы S, пока выражение E истина
 for(E1;E2;E3)[S…] : оператор цикла
 break : прерывает выполнение for и while
 continue : завершить текущую итерацию цикла (продолжить цикл, перейдя к следующей
            итерации)
 halt : останавливает работу bc
 return : возврат из функции значения 0
 return E : возврат из функции значения выражения E
 define a(b) : определяет символьное имя, именованную константу или функцию.
 print <список> : вывод на экран

Функции математической библиотеки 
При необходимости можно подключить к калькулятору библиотеку математических функций. Для этого надо указать в командной строке ключ -l

 s(i) : синус i, где i берётся в радианах
 c(i) : косинус, где i берётся в радианах
 a(i) : арктангенс, возвращает радианы
 e(i) : экспонента
 l(i) : натуральный логарифм i
 j(n, x) : функция Бесселя

Примеры использования 
 $ bc -lq
 for(i=0;i<5;i++) e(i) 
 1.00000000000000000000
 2.71828182845904523536
 7.38905609893065022723
 20.08553692318766774092
 54.59815003314423907811

 $ bc -lq
 scale = 10
 for(i=5;i<10;i++) j(i,1)
 .0002497577
 .0000209383
 .0000015023
 .0000000942
 .0000000052

 $ bc -lq
 if ((2+2)==4)print "2+2 = 4" else " 2+2 !=4 "
 2+2 = 4
 if ((2+2)==5)print "2+2 = 5" else "2+2 != 5 "
 2+2 != 5

 $ echo 75*125 | bc
 9375
 
Вычисление числа Пи:
 $ bc -lq
 scale=100
 4*a(1)
 3.141592653589793238462643383279502884197169399375105820974944592307\
 8164062862089986280348253421170676

Примечания

Ссылки 
 Спецификация bc в Единой спецификации UNIX на сайте The Open Group
 Страница справки man для GNU bc

Утилиты Unix
Язык программирования Си
POSIX