Числа

  Хотя первоначально Лисп был создан лишь для работы с символами и списками, язык и по вычислительной эффективности и по своим свойствам вполне годится и для численных вычислений.

Лисп умеет работать с числами

  Вызов функции вычитания без аргументов возвращает число с изменённым знаком, а функция 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)