Хотя первоначально Лисп был создан лишь для работы с символами и списками, язык и по вычислительной эффективности и по своим свойствам вполне годится и для численных вычислений.
Вызов функции вычитания без аргументов возвращает число с изменённым знаком, а функция abs - абсолютную величину числа:
>(3 -)
-3
>(-3 abs)
3
Для сравнения чисел используются следующие операции:
(x = &rest xi) | ; числа равны |
(x <> &rest xi) | ; числа не равны x |
(x < &rest xi) | ; числа возрастают |
(x > &rest xi) | ; числа убывают |
(x <= &rest xi) | ; возрастают или равны (не убывают) |
(x >= &rest xi) | ; убывают или равны (не возрастают) |
Операции сравнения допускают произвольное число аргументов:
>(1 < 2 3 4 5 6)
1
Арифметическими операциями являются:
(x + &rest xi) | ; сумма |
(x - &rest xi) | ; вычитание |
(x * &rest xi) | ; умножение |
(x / &rest xi) | ; деление |
(x min &rest xi) | ; наименьшее xi |
(x max &rest xi) | ; наибольшее xi |
Имеется большой выбор определённых трансцендентных функций, таких как экспонетна, логарифм и тригонометрические функции:
(x exp) | ; e в степени x |
(x ^ y) | ; x в степени y |
(x log y) | ; логарифм x по основанию y |
(x ln) | ; натуральный логарифм x по основанию e |
(x sqrt) | ; квадратный корень |
Аргументы следующих тригонометрических функций задаются в радианах:
(x sin) и (x arcsin) |
(x cos) и (x arccos) |
(x tan) и (x arctan) |
Число π является значением глобальной переменной pi. Имеются гиперболические и обратные им функции:
(x sinh) и (x arsinh) |
(x cosh) и (x arcosh) |
(x tanh) и (x artanh) |
Генератор случайных чисел вызывается в форме:
(x random)
Она генерирует строго меньшее по абсолютной величине, чем x случайное число.
Рассмотренные ранее функции применимы для всех чисел. Кроме того имеются специфические функции, которые имеют смысл только для целых чисел.
Все числа можно представлять с неограниченной точностью. Целые числа также могут быть очень большими. При их использовании не теряется точность.
Вот несколько функций и предикатов, определённых и используемых лишь для целых чисел:
(n evenp) | ; проверяет, чётное ли число |
(n oddp) | ; проверяет, нечётное ли число |
(n gcd &rest ni) | ; наибольший общий делитель |
(n lcm &rest ni) | ; наименьшее общее кратное |
Язык содержит отсутствующую в традиционных языках программирования возможность использовать дробные числа без преобразования их в числа с плавающей запятой, что обычно лишь уменьшает точность их представления. Дробные числа изображаются знаком и положительными числами, между которыми стоит дробная черта /:
1/3
2/6 ; =1/3
4/1/3 ; =4+1/3
-4/1/3 ; =-(4+1/3)
Если в результате вычислений получается сокращаемое число, то автоматически происходит сокращение числа до его канонической формы.
Для короткой записи очень больших(маленьких) чисел можно использовать запись с экспонентой. Экспоненциальная часть отображает порядок числа в терминах степени десяти:
2.1e3 ; =2100
-2.1e-3 ; =-0.0021
Запись с экспонентой не уменьшает точность числа, а нужна только для краткости записи.
Числа представляются парой чисел, не разделённой пробелами. Одно число должно быть мнимым. Мнимая часть определяется символом i.
1+1i
-2i
-2i+3/4
Также для удобства есть возможность представлять числа в шестнадцатиричной системе исчисления.
0xff ; =255
-0xf.f ; =-(15+15/16)