Песочница

Точные и неточные числа

Lispex поддерживает точные целые произвольной точности, сокращённые точные рациональные и конечные IEEE-754 real с канонической позиционной печатью.

Кратко

LISPEX
(list (/ 1 3) (+ 1 2.0) (number->string -0.0))

Результат

OUTPUT
(1/3 3.0 "-0.0")

Текущие гарантии

  • Точная арифметика остаётся точной; + - * / становятся неточными при любом неточном операнде. Сравнения смешанных чисел выполняются точно.
  • Бесконечность и NaN не могут попасть в runtime; деление на ноль — E313, получение не конечного результата — E314.
  • Конечные real печатаются кратчайшим round-trip способом, только позиционно, с обязательным .0 и сохранением -0.0.

Границы

  • Комплексные числа и трансцендентные функции platform libm исключены.
  • Правило заразности точности арифметики нельзя переносить на выбор и сравнение.