Calc

  Программа написанная на языке Lisp2D, вычисляет формы заданные строками. Анализирует данное выражение для вычисления и вычисляет его.
  Запуск калькулятора:
  > ./lisp2d calc.lisp2d

  Точность вычисления определяется возможностями интерпретатора - числа хранятся в режиме дробей.
  Поддерживаются бинарные функции:
+сложение
-вычитание
*умножение
/деление
%остаток от деления
^степень
  При отсутствии аргумента бинарной функции подразумевается последний результат. Унарная операция минус не поддерживается. Отрицательное число следует писать так:
  -1 → 0-1
  Поддерживается вычисление функций:
absабсолютное значение |x|
floorцелая часть числа [x] (полeng)
floor(x,n)целая часть деления [x/n]
ceilминимальное целое число не меньшее x (потолокeng)
gcd(x,…,z)наибольший общий делитель целых чисел
lcm(x,…,z)наименьшее общее кратное целых чисел
sqrtквадратный корень √x
cbrtкубический корень
expэкспонента ex
lnлогарифм натуральный ln(x)
lgлогарифм десятичный lg(x)
log(base,x)логарифм с основанием basis: logbasis(x)
!факториал x!
sinсинус sin(x)
cosкосинус cos(x)
tgтангенс tg(x)
ctgкотангенс ctg(x)
arcsinарксинус sin-1(x)
arccosарккосинус cos-1(x)
arctgарктангенс tg-1(x)
arctg(y,x)арктангенс от деления tg-1(y/x)
shсинус гиперболический sh(x)
chкосинус гиперболический ch(x)
thтангенс гиперболический th(x)
cthкотангенс гиперболический cth(x)
arshарксинус гиперболический sh-1(x)
archарккосинус гиперболический ch-1(x)
arthарктангенс гиперболический th-1(x)
degrees=x*180/π
radians=x/180*π
combin(x,n)=C(x,n)=n!/x!/(n-x)!
combina(x,n)=n!/(n-x)!
multinomial(x,…,z)=(x+…+z)!/x!…/z!

  Есть возможность использовать математические константы pi и e.
  Функция без аргументов random возвращает случайное число [0…1).
  Поддерживаются числа, со знаком экспоненты.
  Разрешается использовать не скобочную запись для унарных функций.
  Поддерживает вычисления заданные с помощью скобок.
  Последнюю задачу для вычисления можно вернуть нажав кнопку вверх.
  Для выхода нужно нажать ESC или Ctrl+Q.
  Можно запускать вычисления не используя окна.

> ./lisp2d calc.lisp2d "9^9" "x" "exp(2)"
387420489 error 7.38905609893