Обзор бумаги 📄

Приложение D.

Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой

Вкратце

Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой - это итоговая статья, а не исследовательская статья о новом открытии. Все дело в представлении вещественных чисел с плавающей запятой в компьютерных системах и в том, что происходит, когда вы выполняете с ними различные операции.

Это классический документ по арифметике с плавающей запятой, на который часто ссылаются.

Статья начинается с математической записи чисел с плавающей запятой. Затем подробно описываются стратегии округления для основных операций и доказываются границы ошибок операций. Во второй части излагается фактический стандарт реализации - IEEE, а в меньшем заключительном разделе рассматриваются некоторые последствия для компиляторов, использующих код BASIC.

Чем не является эта статья

Эта статья не является статьей в Википедии о плавающих точках. Это не даст понимания почему использования чисел с плавающей точкой, и вы не увидите никаких упоминаний об альтернативных представлениях, таких как фиксированная точка. У вас останется желание узнать больше об истории, мнениях и о том, что изменилось с момента выхода этой статьи в 1991 году.

Как это заставило меня почувствовать

Прокачивается! Было очень здорово лучше понять этот тип данных, который я использую так долго, и посмотреть, что же такое арифметика с плавающей запятой.

Однако, когда я сказал своему другу Антону, что читаю его, он сказал, что пробовал читать и раньше, но нашел это настолько скучным, что он не мог продолжать. Итак, ваш пробег может отличаться. Если вам не очень интересна эта тема, я не думаю, что статья привлечет вас сама по себе.

Обновление: Я спросил Антона, читал ли он этот обзор, и он сказал, что не читал, потому что он был слишком длинным, и напомнил ему об одной статье, которую он однажды читал о плавающей запятой. арифметика.

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

Предпосылки

Вам не нужно быть официальным компьютерным ученым, чтобы прочитать это! Я больше не понимаю, что это значит. Однако вам понадобится интуиция в отношении битов, и вы должны, по крайней мере, сначала понимать представление целых чисел без знака в двоичном формате и использовать числа с плавающей запятой в коде.

Наконец, вам нужно знать школьную математику. Вещи могут стать реальностью. Под реальным я подразумеваю воображаемое. Вы помните комплексные числа? На самом деле я не знал, но они были приведены, чтобы объяснить, почему в стандарте IEEE есть -0 и + o. Я обошелся, не особо понимая этого, но мне нужно было знать показатели степени, логарифмы, основания, квадратные корни и немного пределов, чтобы понять статью в целом.

Самое удивительное

Что меня больше всего поразило в этой статье, так это то, что каждая операция требует особого внимания и индивидуального внимания, чтобы добиться необходимой точности. Вычитания обрабатываются иначе, чем умножения, которые обрабатываются иначе, чем «трансцендентные функции», такие как sine или log.

Хотя я знаю, каким беспорядком может быть высокоуровневое программирование, у меня была идея, что аппаратное обеспечение и низкоуровневая инженерия просты и красивы. Похоже, что это не так.

Названия групп из бумаги

The Ulps (панк-мятлик), Catastrophic Cancellation (хардкор), The Limit Does Not Exist (двойная отсылка к Mean Girls), Machine Epsilon (футуристический рэп).