Повышенная точность
с плавающей запятой Форматы |
---|
ИЭЭЭ 754 |
|
Другой |
Альтернативы |
Разрядность архитектуры компьютера |
---|
Кусочек |
Приложение |
с плавающей запятой Двоичная точность |
с плавающей запятой Десятичная точность |
Расширенная точность относится к форматам чисел с плавающей запятой , которые обеспечивают большую точность, чем базовые форматы с плавающей запятой. [1] Форматы расширенной точности поддерживают базовый формат, сводя к минимуму ошибки округления и переполнения в промежуточных значениях выражений базового формата. В отличие от расширенной точности , арифметика произвольной точности относится к реализации гораздо более крупных числовых типов (с количеством памяти, которое обычно не является степенью двойки) с использованием специального программного обеспечения (или, реже, аппаратного обеспечения).
Реализации повышенной точности
[ редактировать ]Существует долгая история расширенных форматов с плавающей запятой, уходящая корнями почти в середину прошлого века. [ когда? ] . Различные производители использовали разные форматы для повышения точности на разных машинах. Во многих случаях формат расширенной точности не совсем совпадает с увеличением обычных форматов одинарной и двойной точности, которые он призван расширить. В некоторых случаях реализация представляла собой просто программное изменение формата данных с плавающей запятой, но в большинстве случаев повышенная точность была реализована на аппаратном уровне, либо встроенном в сам центральный процессор , либо, что чаще, встроенном в аппаратное обеспечение какого-либо устройства. дополнительный подключенный процессор, называемый « блоком с плавающей запятой » (FPU) или «процессором с плавающей запятой» ( FPP ), доступный для ЦП как быстрое устройство ввода/вывода.
Расширенные прецизионные форматы IBM
[ редактировать ]IBM 1130 , проданный в 1965 году. [2] предлагал два формата с плавающей запятой: 32-битный формат «стандартной точности» и 40-битный формат «расширенной точности». Формат стандартной точности содержит 24-битное до двух дополнение , а расширенная точность использует 32-битное дополнение до двух. Последний формат полностью использует 32-битные целочисленные операции ЦП. Характеристикой обоих форматов является 8-битное поле, содержащее степень двойки, смещенную на 128. Арифметические операции с плавающей запятой выполняются программным обеспечением, а двойная точность вообще не поддерживается. Расширенный формат занимает три 16-битных слова, дополнительное пространство просто игнорируется. [3]
IBM System/360 поддерживает 32-битный «короткий» формат с плавающей запятой и 64-битный «длинный» формат с плавающей запятой. [4] В 360/85 и последующих System/370 добавлена поддержка 128-битного «расширенного» формата. [5] Эти форматы по-прежнему поддерживаются в текущей версии , где они теперь называются форматами « шестнадцатеричных чисел с плавающей запятой » (HFP).
Расширенный формат точности Microsoft MBF
[ редактировать ]Порт Microsoft BASIC для процессора 6502 , например, в таких адаптациях, как Commodore BASIC , AppleSoft BASIC , KIM-1 BASIC или MicroTAN BASIC , поддерживает расширенный 40-битный вариант формата Microsoft Binary Format (MBF) с плавающей запятой с 1977 года. [6]
Форматы расширенной точности IEEE 754
[ редактировать ]Стандарт IEEE 754 с плавающей запятой рекомендует, чтобы реализации обеспечивали форматы повышенной точности. Стандарт определяет минимальные требования для расширенного формата, но не определяет кодировку. [7] Кодировка является выбором разработчика. [8]
Процессоры IA32 x86-64 , . и Itanium поддерживают, безусловно, наиболее влиятельный формат в этом стандарте — 80-битный (64-битное мантисса) «двойное расширение» формата Intel, описанный в следующем разделе
Математические сопроцессоры Motorola 6888x и процессоры Motorola 68040 и 68060 также поддерживают 64-битный формат расширенной точности значащих и значащих чисел (аналогичный формату Intel, но дополненный до 96-битного формата с 16 неиспользуемыми битами, вставленными между полями экспоненты и мантиссы, и значения с нулевой экспонентой и единицей бита 63 являются нормализованными значениями. [9] ). Последующие процессоры Coldfire не поддерживают этот 96-битный формат расширенной точности. [10]
Математический сопроцессор FPA10 для ранних процессоров ARM также поддерживает 64-битный формат расширенной точности (аналогично формату Intel, но дополненный до 96-битного формата с 16 нулевыми битами, вставленными между полями знака и показателя степени), но без правильного округления. . [11]
80-битные форматы x87 и Motorola 68881 соответствуют требованиям двойного расширенного формата IEEE 754-1985. [12] двоичный формат IEEE 754 как и 128-битный .
расширенный формат точности x86
[ редактировать ]Формат расширенной точности x86 — это 80-битный формат, впервые реализованный в Intel 8087 математическом сопроцессоре и поддерживаемый всеми процессорами, основанными на конструкции x86 , включающими модуль с плавающей запятой (FPU).
Intel 8087 был первым устройством x86 , которое аппаратно поддерживало арифметику с плавающей запятой. Он был разработан для поддержки 32-битного формата «одинарной точности» и 64-битного формата «двойной точности» для кодирования и обмена числами с плавающей запятой. Расширенный формат был разработан не для хранения данных с более высокой точностью, а, скорее, для более надежного и точного вычисления временных двойных результатов за счет минимизации ошибок переполнения и округления в промежуточных вычислениях. [а] [14] [15] Все регистры с плавающей запятой в 8087 поддерживают этот формат, и он автоматически преобразует числа в этот формат при загрузке регистров из памяти , а также преобразует результаты обратно в более традиционные форматы при сохранении регистров обратно в память. Чтобы обеспечить возможность сохранения результатов промежуточных подвыражений в рабочих переменных расширенной точности и продолжения их выполнения в операторах языка программирования, а также возобновления прерванных вычислений в том месте, где они были прерваны, он предоставляет инструкции , которые передают значения между этими внутренними регистрами и памятью без выполнения какого-либо преобразования, что, следовательно, обеспечивает доступ к расширенному формату для расчетов [б] – также возрождаем вопрос о точности функций таких чисел, но с более высокой точностью.
Блоки с плавающей запятой (FPU) на всех последующих процессорах x86 поддерживали этот формат. В результате может быть разработано программное обеспечение, использующее преимущества более высокой точности, обеспечиваемой этим форматом. Уильям Кахан , главный разработчик арифметики x87 и первоначальный стандарт IEEE 754, отмечает разработку x87 с плавающей запятой: «Расширенный формат настолько широк, насколько мы осмелились (80 бит), был включен для выполнения той же вспомогательной роли, что и 13 внутренний десятичный формат используется в 10 десятичных калькуляторах Hewlett-Packard». [17] Более того, Кахан отмечает, что 64 бита были самой широкой мантиссой, в которой можно было осуществить распространение переноса без увеличения времени цикла на 8087: [18] и что расширенная точность x87 была разработана для возможности расширения до более высокой точности в будущих процессорах:
- «На данный момент 10-байтовый расширенный формат является приемлемым компромиссом между ценностью сверхточной арифметики и ценой ее реализации для обеспечения быстрой работы; очень скоро еще два байта точности станут приемлемыми, и в конечном итоге 16-байтовый формат ... Подобная постепенная эволюция в сторону большей точности уже была предусмотрена, когда был разработан стандарт IEEE 754 для арифметики с плавающей запятой ». [19]
В этом 80-битном формате используется один бит для знака мантиссы, 15 битов для поля показателя степени (т. е. тот же диапазон, что и в 128-битном формате четверной точности IEEE 754 ) и 64 бита для мантиссы. Поле экспоненты смещено на 16383, а это означает, что 16383 необходимо вычесть из значения в поле экспоненты, чтобы вычислить фактическую степень 2 . [20] Значение поля экспоненты 32767 (все пятнадцать битов 1 ) зарезервировано для обеспечения представления особых состояний, таких как бесконечность и Not a Number . Если поле показателя степени равно нулю, значение является денормальным числом, а показатель степени 2 равен -16382. [21]
В следующей таблице « s » — это значение знакового бита (0 означает положительное значение, 1 означает отрицательное значение), « e » — значение поля показателя степени, интерпретируемое как положительное целое число, а « m » — мантисса, интерпретируемая как положительное двоичное число, где двоичная точка расположена между битами 63 и 62. Поле « m » представляет собой комбинацию целой и дробной частей на приведенной выше диаграмме.
Интерпретация полей значения x86 Extended Precision Экспонента Значение Значение биты
78–64кусочек
63биты
62–0все 0 0 0 Ноль. Знаковый бит дает знак нуля, который обычно не имеет смысла. ненулевой Денормальный. Значение равно (−1) с × м × 2 −16382 1 что-либо Псевдоденормальный. 80387 и более поздние версии правильно интерпретируют это значение, но не создают его. Значение равно (−1) с × м × 2 −16382 биты
78–64биты
63–62биты
61–0все 1 00 0 Псевдо-бесконечность. Знаковый бит дает знак бесконечности. 8087 и 80287 трактуют это как бесконечность. 80387 и более поздние версии рассматривают это как недопустимый операнд. ненулевой Псевдо «Не число». Знаковый бит не имеет смысла. 8087 и 80287 рассматривают это как сигнал, а не число. 80387 и более поздние версии рассматривают это как недопустимый операнд. 01 что-либо Псевдо «Не число». Знаковый бит не имеет смысла. 8087 и 80287 рассматривают это как сигнал, а не число. 80387 и более поздние версии рассматривают это как недопустимый операнд. 10 0 Бесконечность. Знаковый бит дает знак бесконечности. 8087 и 80287 рассматривают это как сигнал, а не число. Сопроцессоры 8087 и 80287 использовали представление псевдобесконечности для бесконечностей. ненулевой При сигнале «Не число» знаковый бит не имеет смысла. 11 0 Неопределенное число с плавающей запятой, результат недопустимых вычислений, таких как квадратный корень из отрицательного числа, логарифм отрицательного числа, 0 / 0 , бесконечность / бесконечность , бесконечность, умноженная на 0, и другие, когда процессор настроен так, чтобы не генерировать исключения для недопустимых операндов. Знаковый бит не имеет смысла. Это особый случай «Тихо, а не числа». ненулевой Тихо: «Не число», знаковый бит бессмысленен. 8087 и 80287 рассматривают это как сигнал, а не число. биты
78–64кусочек
63биты
62–0любой
другой0 что-либо Ненормально. Генерируется только на 8087 и 80287. 80387 и более поздние версии рассматривают это как недопустимый операнд. Значение равно (−1) с × м × 2 е − 16383 1 что-либо Нормализованное значение. Значение равно (−1) с × м × 2 е − 16383
В отличие от форматов одинарной и двойной точности , этот формат не использует неявный/ скрытый бит . Скорее, бит 63 содержит целую часть мантиссы, а биты 62–0 содержат дробную часть. Бит 63 будет равен 1 для всех нормализованных чисел. эта конструкция имела несколько преимуществ 8087 Во время разработки :
- Вычисления можно выполнить немного быстрее, если в регистре присутствуют все биты мантиссы.
- 64-битная мантисса обеспечивает достаточную точность, чтобы избежать потери точности при преобразовании результатов обратно в формат двойной точности в огромном числе случаев.
- Этот формат обеспечивает механизм индикации потери точности из-за потери значения, которую можно перенести в дальнейшие операции. Например, расчет 2×10 −4930 × 3 × 10 −10 × 4 × 10 20 генерирует промежуточный результат 6 × 10 −4940 что является ненормальным и также приводит к потере точности. Произведение всех слагаемых равно 24 × 10. −4920 которое можно представить в виде нормализованного числа. 80287 . может завершить этот расчет и указать на потерю точности, вернув «ненормальный» результат (показатель степени не равен 0, бит 63 = 0) [22] [23] Процессоры, начиная с 80387, больше не генерируют ненормальные значения и не поддерживают ненормальные входные данные для операций. Они будут генерировать денормализованное значение, если произойдет опустошение, но будут генерировать нормализованный результат, если последующие операции с денормализованным значением могут быть нормализованы. [24]
Введение в использование
[ редактировать ]80-битный формат с плавающей запятой стал широко доступен к 1984 году. [25] после разработки C, Fortran и подобных компьютерных языков, которые изначально предлагали только распространенные 32- и 64-битные размеры с плавающей запятой. В конструкции x86 большинство компиляторов C теперь поддерживают 80-битную расширенную точность посредством типа long double , и это было указано в стандартах C99 / C11 (арифметика с плавающей запятой IEC 60559 (Приложение F)). Компиляторы x86 для других языков часто также поддерживают повышенную точность, иногда с помощью нестандартных расширений: например, Turbo Pascal предлагает extended
тип, и некоторые Фортрана имеют компиляторы REAL*10
тип (аналогично REAL*4
и REAL*8
). повышенной точности математические подпрограммы , такие как извлечение квадратного корня и тригонометрические функции Такие компиляторы также обычно включают в свои стандартные библиотеки .
Рабочий диапазон
[ редактировать ]80-битный формат с плавающей запятой имеет диапазон (включая субнормальные значения ) примерно от 3,65 × 10. −4951 до 1,18 × 10 +4932 . Хотя log 10 ( 2 64 ) ≈ 19,266 , этот формат обычно описывается как дающий примерно восемнадцать значащих цифр точности (пол журнала 10 ( 2 63 ) , минимальная гарантированная точность). Использование десятичных дробей, когда речь идет о двоичных числах, неудачно, потому что большинство десятичных дробей представляют собой повторяющиеся последовательности в двоичном формате, как и 2/3 форме . в десятичной Таким образом, такое значение, как 10,15, представляется в двоичном виде как эквивалент 10,1499996185 и т. д. в десятичном виде для REAL*4
но 10.15000000000000035527 и т. д. в REAL*8
: взаимное преобразование будет включать приближение, за исключением тех нескольких десятичных дробей, которые представляют точное двоичное значение, например 0,625. Для REAL*10
, десятичная строка равна 10,149999999999999999996530553 и т. д. Последние 9 цифр — это восемнадцатая дробная цифра и, следовательно, двадцатая значащая цифра строки. Границы преобразования десятичных и двоичных чисел для 80-битного формата могут быть заданы следующим образом: если десятичная строка, содержащая не более 18 значащих цифр, правильно округлена до 80-битного двоичного значения с плавающей запятой IEEE 754 (как на входе), затем преобразуется обратно. тому же количеству значащих десятичных цифр (что и при выводе), то итоговая строка будет в точности соответствовать исходной; в то время как, наоборот, если 80-битное двоичное значение с плавающей запятой IEEE 754 правильно преобразовано и (ближайшее) округлено до десятичной строки, содержащей не менее 21 значащей десятичной цифры, а затем преобразовано обратно в двоичный формат, оно будет точно соответствовать оригиналу. [12] Эти аппроксимации особенно проблематичны при указании наилучшего значения констант в формулах с высокой точностью, которые могут быть рассчитаны с помощью арифметики произвольной точности .
Нужен 80-битный формат
[ редактировать ]Ярким примером необходимости иметь минимум 64 бита точности в мантиссе формата расширенной точности является необходимость избегать потери точности при возведении в степень значений двойной точности . [26] [27] [28] [с] Модули с плавающей запятой x86 не предоставляют инструкции, которая непосредственно выполняет возведение в степень : вместо этого они предоставляют набор инструкций, которые программа может последовательно использовать для выполнения возведения в степень с использованием уравнения:
Чтобы избежать потери точности, промежуточные результаты « log 2 ( x ) » и « y ·log 2 ( x ) » должны вычисляться с гораздо более высокой точностью, потому что эффективно и показатель степени, и поля мантиссы x должны вписываться в значимое поле промежуточного результата. Впоследствии поле мантиссы промежуточного результата разделяется между полями экспоненты и мантиссы конечного результата, когда 2 промежуточный результат рассчитывается. Следующее обсуждение описывает это требование более подробно.
После небольшой распаковки IEEE 754 значение двойной точности можно представить как:
где s — знак показателя степени (0 или 1), E — несмещенный показатель степени, представляющий собой целое число в диапазоне от 0 до 1023, а M — мантисса, представляющая собой 53-битное значение, попадающее в диапазон 1 ≤ М < 2 . Отрицательные числа и ноль можно игнорировать, поскольку логарифм этих значений не определен. Для целей данного обсуждения M не имеет 53-битной точности, поскольку оно должно быть больше или равно единице, т.е. скрытый бит не учитывается при определении точности (обратите внимание, что в ситуациях, когда M меньше 1, значение равно на самом деле это ненормально и, следовательно, возможно, уже произошла потеря точности. Эта ситуация выходит за рамки этой статьи).
Если взять журнал этого представления числа двойной точности и упростить его, получим следующее:
Этот результат показывает, что при логарифме числа по основанию 2 знак показателя исходного значения становится знаком логарифма, показатель степени исходного значения становится целой частью мантиссы логарифма, а мантисса исходное значение преобразуется в дробную часть мантиссы логарифма.
Поскольку E — целое число в диапазоне от 0 до 1023, для представления целой части логарифма необходимо до 10 бит слева от точки счисления. Поскольку M попадает в диапазон 1 ≤ M < 2 , значение log 2 M будет находиться в диапазоне 0 ≤ log 2 M < 1, поэтому справа от точки счисления необходимо как минимум 52 бита для представления дробной части. логарифм. Объединение 10 бит слева от точки системы счисления с 52 битами справа от точки системы счисления означает, что значительная часть логарифма должна быть вычислена с точностью не менее 62 бит. На практике значения M менее требуют 53 бита справа от точки счисления и значения M меньше, чем требуют 54 бита справа от точки счисления, чтобы избежать потери точности. Уравновешивая это требование для дополнительной точности справа от точки счисления, показатели степени менее 512 требуют только 9 бит слева от точки счисления, а показатели степени менее 256 требуют только 8 бит слева от точки счисления.
Заключительная часть расчета возведения в степень — вычисление 2 промежуточный результат . «Промежуточный результат» состоит из целой части « I », добавленной к дробной части « F ». Если промежуточный результат отрицательный, то необходима небольшая корректировка, чтобы получить положительную дробную часть, поскольку и « I », и « F » являются отрицательными числами.
Для положительных промежуточных результатов:
Для отрицательных промежуточных результатов:
Таким образом, целая часть промежуточного результата (« I » или « I − 1 ») плюс смещение становится показателем степени конечного результата и преобразуется в положительную дробную часть промежуточного результата: 2 Ф или 2 Ф + 1 становится значащим конечного результата. Чтобы обеспечить 52-битную точность конечного результата, положительная дробная часть должна поддерживаться как минимум на уровне 52 бит.
В заключение, точное количество бит точности, необходимое для мантиссы промежуточного результата, в некоторой степени зависит от данных, но 64 бита достаточно, чтобы избежать потери точности в подавляющем большинстве вычислений возведения в степень, включающих числа двойной точности .
Количество битов, необходимое для экспоненты формата расширенной точности, следует из требования, чтобы произведение двух чисел двойной точности не переполнялось при вычислении с использованием расширенного формата. Наибольший возможный показатель значения двойной точности равен 1023, поэтому показатель наибольшего возможного произведения двух чисел двойной точности равен 2047 (11-битное значение). Добавление смещения для учета отрицательных показателей означает, что поле показателя должно иметь ширину не менее 12 бит.
Сочетание этих требований: 1 бит для знака, 12 бит для смещенной экспоненты и 64 бита для мантиссы означает, что для формата расширенной точности потребуется как минимум 77 бит. Инженерные соображения привели к окончательному определению 80-битного формата (в частности, стандарт IEEE 754 требует, чтобы диапазон экспонент расширенного формата точности соответствовал диапазону следующего по величине четырехкратного формата точности, который составляет 15 бит). [27]
Другим примером вычислений, в которых используется арифметика с повышенной точностью, являются итеративные схемы уточнения, используемые для косвенной очистки ошибок, накопленных в прямом решении во время, как правило, очень большого количества вычислений, выполняемых для числовой линейной алгебры. [30]
Языковая поддержка
[ редактировать ]- Некоторые C / C++ реализации (например, GNU Compiler Collection (GCC), Clang , Intel C++ ) реализуют
long double
использование 80-битных чисел с плавающей запятой в системах x86. Однако это поведение определяется реализацией и не является обязательным, но разрешено стандартом, как указано для оборудования IEEE 754 в стандарте C99 «Приложение F IEC 60559, арифметика с плавающей запятой». GCC также предоставляет__float80
и__float128
типы. [31] - Некоторые реализации Common Lisp (например, CMU Common Lisp , Embeddable Common Lisp ) реализуют
long-float
использование 80-битных чисел с плавающей запятой в системах x86. - Язык программирования D реализует
real
использование наибольшего размера с плавающей запятой, реализованного аппаратно, например 80 бит для процессоров x86 . На других машинах это будет самый широкий тип с плавающей запятой, изначально поддерживаемый ЦП, или 64-битная двойная точность, в зависимости от того, что шире. - Turbo Pascal (и Object Pascal или Delphi ) имеет
extended
80-битный тип доступен в дополнение кreal
/single
(32 бита) иdouble
(64 бита), либо изначально (при наличии сопроцессора 80x87), либо эмулируемо (через библиотеку Turbo87); этотextended
type доступен на 16, 32 и 64-битных платформах, возможно, с дополнением . [32] - Система Racket предоставляет 80-битный тип данных extflonum в системах x86. времени выполнения
- Стандартная библиотека Swift предоставляет
Float80
тип данных. - Компилятор PowerBASIC BASIC предоставляет
EXT
илиEXTENDED
10-байтовый тип данных с плавающей запятой повышенной точности. - Zig предоставляет тип f80 начиная с версии 0.10.0.
См. также
[ редактировать ]- GNU MPFR - библиотека GNU «Надежность операций с плавающей запятой множественной точности» для C.
- IBM шестнадцатеричный формат с плавающей запятой
- ИЭЭЭ 754
- длинный двойной
- х87
Сноски
[ редактировать ]- ^ «Этот формат предназначен главным образом для того, чтобы помочь программистам повысить целостность их одинарного и двойного программного обеспечения, а также для уменьшения деградации из-за округления в вычислениях двойной матрицы больших размеров, и его можно легко использовать таким образом, что замена расширенного четырехкратного никогда не следует лишать законной силы его использование». — x87 дизайнер В. Кахан [13]
- ^ «Языки высокого уровня будут использовать расширенный (невидимо) для оценки промежуточных подвыражений, а позже могут предоставлять расширенный тип данных как декларируемый». [16] : 70
- ^ «Наличие как минимум такого же количества дополнительных бит точности в расширенном, как и в поле экспоненты базового формата, который он поддерживает, значительно упрощает точное вычисление трансцендентных функций, внутренних продуктов и степенной функции y х ." [29] : 70
Ссылки
[ редактировать ]- ^ IEEE 754 (2008 , п. 2.1.21) определяет формат расширенной точности как «Формат, который расширяет поддерживаемый базовый формат, обеспечивая более высокую точность и диапазон».
- ^ Фрэнсис, CG (11 февраля 1965 г.). «IBM представляет мощный небольшой компьютер» . Директор по информации (Пресс-релиз). Уайт-Плейнс, Нью-Йорк : Международная корпорация Business Machines (IBM). Архивировано из оригинала 5 июля 2019 г.
- ^ Библиотека подпрограмм (PDF) . IBM 1130 (9-е изд.). Корпорация IBM. 1974. с. 93.
- ^ Принципы работы . IBM System/360 (9-е изд.). Корпорация IBM. 1970. с. 41.
- ^ Принципы работы IBM System/370 (7-е изд.). Корпорация IBM. 1980. стр. 9-2–9-3.
- ^ Стейл, Майкл (20 октября 2008 г.). «Создайте свою версию Microsoft BASIC для 6502» . pagetable.com . п. 46. Архивировано из оригинала 30 мая 2016 г. Проверено 30 мая 2016 г.
- ^ Компьютерное общество IEEE (29 августа 2008 г.). Стандарт IEEE для арифметики с плавающей запятой (отчет). IEEE. §3.7. дои : 10.1109/IEESTD.2008.4610935 . ISBN 978-0-7381-5752-8 . Стандарт IEEE 754-2008.
- ^ Брюэр, Кевин. «Отчет Кевина» . Справочный материал IEEE-754 . Проверено 19 февраля 2012 г.
- ^ Семейство Motorola MC68000 (PDF) . Справочное руководство программиста. НХП Полупроводники. 1992. стр. 1–16, 1–18, 1–23.
- ^ Семейство ColdFire (PDF) . Справочное руководство программиста. Свободный полупроводник. 2005. с. 7-7.
- ^ «Технические данные FPA10» (PDF) . chrisacorns.computinghistory.org.uk . GEC Plessey Semiconductors. 11 июня 1993 года . Проверено 26 ноября 2020 г.
- ^ Jump up to: Перейти обратно: а б Кахан, Уильям (1 октября 1997 г.). «Конспекты лекций о состоянии стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF) .
- ^ Кахан, Уильям (1 октября 1997 г.). «Конспекты лекций о состоянии стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF) . п. 5.
- ^ Эйнарссон, Бо (2005). Точность и надежность в научных вычислениях . СИАМ. стр. 9 и далее. ISBN 978-0-89871-815-7 . Проверено 3 мая 2013 г.
- ^ «Архитектуры Intel 64 и IA-32» . Руководство разработчика программного обеспечения. Корпорация Intel, март 2012 г. §8.2.
- ^ Кунен, Джером Т. (январь 1980 г.). «Руководство по реализации предлагаемого стандарта арифметики с плавающей запятой». IEEE-компьютер . 13 : 68–79. дои : 10.1109/MC.1980.1653344 . S2CID 206445847 .
- ^ Кахан, Уильям (22 ноября 1983 г.). «Математика, написанная на песке — hp-15C, Intel 8087 и т. д.» (PDF) .
- ^ Гольдберг, Дэвид (март 1991 г.). «Что каждый ученый-компьютерщик должен знать об арифметике с плавающей запятой» (PDF) . Обзоры вычислительной техники ACM . 23 (1): 192. дои : 10.1145/103162.103163 . S2CID 222008826 .
- ^ Хайэм, Николас (2002). «Проектирование устойчивых алгоритмов». Точность и устойчивость численных алгоритмов (2-е изд.). Общество промышленной и прикладной математики (SIAM). п. 43.
- ^ Техническое описание Intel 80C187 (PDF) (отчет). Корпорация Intel – через datasheetcatalog.org.
- ^ Руководство разработчика архитектур Intel 64 и IA-32 (отчет). Том. 1. Корпорация Интел . стр. с 4–6 по 4–9 и с 4–18 по 4–21.
- ^ Палмер, Джон Ф.; Морс, Стивен П. (1984). Праймер 8087 . Уайли Пресс. стр. 14 . ISBN 0-471-87569-4 .
- ^ Морс, Стивен П.; Альберт, Дуглас Дж. (1986). Архитектура 80286 . Уайли Пресс. стр. 91–111 . ISBN 0-471-83185-9 .
- ^ Руководство разработчика архитектур Intel 64 и IA-32 (отчет). Том. 1. Корпорация Интел . стр. 8–21–8–22.
- ^ Северанс, Чарльз (20 февраля 1998 г.). «Интервью со стариком плавающей запятой» . eecs.berkeley.edu . Калифорнийский университет в Беркли .
- ^ Палмер, Джон Ф.; Морс, Стивен П. (1984). Праймер 8087 . Уайли Пресс. стр. 16 . ISBN 0-471-87569-4 .
- ^ Jump up to: Перейти обратно: а б Морс, Стивен П.; Альберт, Дуглас Дж. (1986). Архитектура 80286 . Уайли Пресс. С. 96–98 . ISBN 0-471-83185-9 .
- ^ Хаф, Дэвид (март 1981 г.). «Применение предлагаемого стандарта IEEE 754 для арифметики с плавающей запятой». IEEE-компьютер . 14 (3): 70–74. дои : 10.1109/CM.1981.220381 . S2CID 14645749 .
- ^ Кунен, Джером Т. (январь 1980 г.). «Руководство по реализации предлагаемого стандарта арифметики с плавающей запятой». Компьютер IEEE : 68–79. дои : 10.1109/MC.1980.1653344 . S2CID 206445847 .
- ^ Деммель, Джеймс; Хида, Йозо; Кахан, Уильям ; Ли, Сяое С .; Мукерджи, Сонил; Риди, Э. Джейсон (июнь 2006 г.). «Границы ошибок в результате сверхточного итеративного уточнения» (PDF) . Транзакции ACM в математическом программном обеспечении . 32 (2): 325–351. дои : 10.1145/1141885.1141894 . S2CID 1340891 . Проверено 18 апреля 2014 г.
- ^ «Плавающие типы (с использованием коллекции компиляторов GNU (GCC))» .
- ^ «Расширенный тип данных различается на разных платформах» .