Повышенная точность - Extended precision - Wikipedia
Плавающая точка форматы |
---|
IEEE 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 и последующие модели Система / 370 добавить поддержку 128-битного «расширенного» формата.[5] Эти форматы по-прежнему поддерживаются в текущем дизайн, где они теперь называются "шестнадцатеричный с плавающей запятой "(HFP) форматы.
Формат расширенной точности Microsoft MBF
В Microsoft BASIC порт для 6502 CPU, например, в таких адаптациях, как Commodore BASIC, AppleSoft BASIC, КИМ-1 БАЗОВЫЙ или же MicroTAN BASIC, поддерживает расширенный 40-битный вариант формата с плавающей запятой Двоичный формат Microsoft (MBF) с 1977 года.[6]
Форматы повышенной точности IEEE 754
В IEEE 754 Стандарт с плавающей запятой рекомендует, чтобы реализации обеспечивали форматы с расширенной точностью. Стандарт определяет минимальные требования для расширенного формата, но не определяет кодировку.[7] Кодировка - выбор разработчика.[8]
В IA32, x86-64, и Itanium процессоры поддерживают 80-битный "двойной расширенный" формат повышенной точности с 64-битным значением. В Intel 8087 математика сопроцессор был первым x86 устройство, которое аппаратно поддерживает арифметику с плавающей запятой. Он был разработан для поддержки 32-битного формата «одинарной точности» и 64-битного формата «двойной точности» для кодирования и перестановки чисел с плавающей запятой. Временный реальный (расширенный) формат был разработан не для хранения данных с более высокой точностью как таковой, а в первую очередь для обеспечения более надежного и точного вычисления двойных результатов за счет минимизации ошибок переполнения и округления в промежуточных вычислениях.[а][10][11] Например, многие алгоритмы с плавающей запятой (например, возведение в степень ) страдают от значительной потери точности при вычислении с использованием наиболее прямых реализаций. Чтобы смягчить такие проблемы, внутренние регистры в 8087 были разработаны для хранения промежуточных результатов в 80-битном формате «повышенной точности». 8087 автоматически преобразует числа в этот формат при загрузке регистров с плавающей запятой из объем памяти а также преобразует результаты обратно в более традиционные форматы при сохранении регистров обратно в память. Чтобы обеспечить возможность сохранения промежуточных результатов подвыражения в временных переменных повышенной точности и продолжения в операторах языка программирования, а также для возобновления прерванных вычислений с того места, где они были прерваны, он предоставляет инструкции которые передают значения между этими внутренними регистрами и памятью без выполнения какого-либо преобразования, что, таким образом, обеспечивает доступ к расширенному формату для вычислений[b] - также возрождает вопрос о точности функций таких чисел, но с большей точностью.
В единицы с плавающей запятой (FPU) на всех последующих x86 процессоры поддерживают этот формат. В результате может быть разработано программное обеспечение, использующее более высокую точность, обеспечиваемую этим форматом. Уильям Кахан, основной разработчик арифметики x87 и первоначальные предложения по стандарту IEEE 754, примечания по разработке плавающей запятой x87: «Расширенный формат настолько широкий, насколько мы осмелились (80 бит), был включен для выполнения той же вспомогательной роли, что и 13 десятичных внутренних формат используется в десятичных калькуляторах Hewlett-Packard ».[13] Более того, Кахан отмечает, что 64 бита были самым широким значением, по которому распространение переноса могло быть выполнено без увеличения времени цикла на 8087,[14] и что повышенная точность x87 была разработана с целью повышения точности в будущих процессорах: «На данный момент 10-байтовый расширенный формат это приемлемый компромисс между ценностью сверхточной арифметики и ценой ее реализации для быстрой работы; очень скоро еще два байта точности станут допустимыми, и в конечном итоге 16-байтовый формат. ... Такая постепенная эволюция в сторону большей точности уже рассматривалась, когда Стандарт IEEE 754 для арифметики с плавающей запятой был оформлен ".[15]
В Motorola 6888x математические сопроцессоры и Motorola 68040 и 68060 процессоры поддерживают тот же 64-битный тип значащей расширенной точности (похожий на формат Intel, но дополненный до 96-битного формата с 16 неиспользуемыми битами, вставленными между полями экспоненты и значащей[16]). Последующие Холодный огонь процессоры не поддерживают этот 96-битный формат повышенной точности.[17]
Математический сопроцессор FPA10 для раннего РУКА процессоры также поддерживают этот тип повышенной точности (аналогичный формату Intel, но с дополнением до 96-битного формата с 16 нулевыми битами, вставленными между полями знака и экспоненты), но без правильного округления.[18]
80-битные форматы x87 и Motorola 68881 соответствуют требованиям двойного расширенного формата IEEE 754,[19] как и IEEE 754 128 бит формат.
x86 формат повышенной точности
Формат расширенной точности x86 - это 80-битный формат, впервые реализованный в Intel 8087 математика сопроцессор и поддерживается всеми процессорами, основанными на x86 дизайн которые включают блок с плавающей запятой (FPU). Этот 80-битный формат использует один бит для знака мантиссы, 15 бит для поля экспоненты (то есть тот же диапазон, что и 128-битный формат IEEE 754 с четырехкратной точностью ) и 64 бита для мантиссы. Поле экспоненты пристрастный на 16383, что означает, что 16383 нужно вычесть из значения в поле экспоненты, чтобы вычислить фактическую степень двойки.[20] Значение поля экспоненты 32767 (все пятнадцать бит 1) зарезервировано, чтобы обеспечить представление особых состояний, таких как бесконечность и Не число. Если поле экспоненты равно нулю, значение равно ненормальный число и показатель степени 2 равны −16382.[21]
В следующей таблице "s"- значение знакового бита (0 означает положительное, 1 означает отрицательное),"е"- значение поля экспоненты, интерпретируемое как положительное целое число, и"м"- мантисса, интерпретируемая как положительное двоичное число, где двоичная точка расположена между битами 63 и 62."мПоле "представляет собой комбинацию целой и дробной частей на диаграмме выше.
Экспонента | Значительный | Смысл | |
---|---|---|---|
Все нули | Бит 63 | Биты 62-0 | |
Нуль | Нуль | Нуль. Знаковый бит дает знак нуля. | |
Ненулевой | Денормальный. Ценность (−1)s × м × 2−16382 | ||
Один | Что-либо | Псевдо денормальный. 80387 и более поздние версии правильно интерпретируют это значение, но не генерируют его. Ценность (−1)s × м × 2−16382 | |
Все | Биты 63,62 | Биты 61-0 | |
00 | Нуль | Псевдо-бесконечность. Знаковый бит дает знак бесконечности. 8087 и 80287 рассматривают это как бесконечность. 80387 и более поздние версии обрабатывают это как недопустимый операнд. | |
Ненулевой | Псевдо - не число. Знаковый бит не имеет смысла. 8087 и 80287 рассматривают это как сигнал, а не число. 80387 и более поздние версии обрабатывают это как недопустимый операнд. | ||
01 | Что-либо | Псевдо не число. Знаковый бит не имеет смысла. 8087 и 80287 рассматривают это как сигнал, а не число. 80387 и более поздние версии обрабатывают это как недопустимый операнд. | |
10 | Нуль | Бесконечность. Знаковый бит дает знак бесконечности. 8087 и 80287 рассматривают это как сигнал, а не число. Сопроцессоры 8087 и 80287 использовали представление псевдобесконечности для бесконечностей. | |
Ненулевой | Сигнализация - это не число, знаковый бит не имеет смысла. | ||
11 | Нуль | Неопределенный с плавающей запятой, результат неверных вычислений, таких как квадратный корень из отрицательного числа, логарифм отрицательного числа, 0/0, бесконечность / бесконечность, бесконечность, умноженная на 0, и другие, когда процессор был настроен так, чтобы не генерировать исключения для недопустимые операнды. Знаковый бит не имеет смысла. Это частный случай Тихого, а не числа. | |
Ненулевой | Quiet Not a Number, бит знака не имеет смысла. 8087 и 80287 рассматривают это как сигнал, а не число. | ||
Все остальные значения | Бит 63 | Биты 62-0 | |
Нуль | Что-либо | Ненормально. Генерируется только на 8087 и 80287. 80387 и более поздние версии обрабатывают это как недопустимый операнд. Ценность (−1)s × м × 2е−16383 | |
Один | Что-либо | Нормализованное значение. Ценность (−1)s × м × 2е−16383 |
В отличие от Один и двойная точность форматов, в этом формате не используется неявный /скрытый бит. Напротив, бит 63 содержит целую часть мантиссы, а биты 62-0 содержат дробную часть. Бит 63 будет равен 1 для всех нормализованных чисел. У этой конструкции было несколько преимуществ, когда 8087 разрабатывался:
- Вычисления могут быть выполнены немного быстрее, если в регистре присутствуют все биты мантиссы.
- 64-битное значение обеспечивает достаточную точность, чтобы избежать потери точности при преобразовании результатов обратно в формат двойной точности в огромном количестве случаев.
- Этот формат обеспечивает механизм для индикации потери точности из-за потери значимости, которая может быть перенесена в дальнейшие операции. Например, расчет 2×10−4930 × 3×10−10 × 4×1020 генерирует промежуточный результат 6×10−4940 который является ненормальный а также влечет за собой потерю точности. Результатом всех условий является 24×10−4920 которое можно представить как нормализованное число. В 80287 может завершить это вычисление и указать потерю точности, вернув «ненормальный» результат (показатель степени не равен 0, бит 63 = 0).[22][23] Процессоры с 80387 больше не генерируют аномалии и не поддерживают нестандартные входные данные для операций. Они будут генерировать денормализацию, если происходит потеря значимости, но будут генерировать нормализованный результат, если последующие операции над денормализацией могут быть нормализованы.[24]
Введение в использование
80-битный формат с плавающей запятой был широко доступен к 1984 году,[25] после разработки C, Fortran и подобных компьютерных языков, которые изначально предлагали только общие 32- и 64-разрядные размеры с плавающей запятой. На x86 дизайн наиболее C компиляторы теперь поддерживают 80-битную расширенную точность через длинный двойной тип, и это было указано в C99 / C11 стандартов (арифметика с плавающей запятой IEC 60559 (приложение F)). Компиляторы на x86 для других языков часто также поддерживают повышенную точность, иногда с помощью нестандартных расширений: например, Турбо Паскаль предлагает расширенный
типа и несколько Фортран компиляторы имеют РЕАЛЬНЫЙ * 10
тип (аналог РЕАЛЬНЫЙ * 4
и РЕАЛЬНЫЙ * 8
). Такие компиляторы также обычно включают математические подпрограммы, Такие как квадратный корень и тригонометрические функции, в своем стандарте библиотеки.
Рабочий диапазон
80-битный формат с плавающей запятой имеет диапазон (включая субнормальные ) примерно от 3,65 × 10−4951 до 1,18 × 104932. Хотя журнал10(264) ≅ 19.266, этот формат обычно описывается как обеспечивающий приблизительно восемнадцать значащих цифр точности. Использование десятичного числа при разговоре о двоичном коде неудачно, потому что большинство десятичных дробей являются повторяющимися последовательностями в двоичном формате, как 2/3 - в десятичном. Таким образом, такое значение, как 10,15, представлено в двоичном виде как эквивалент 10,1499996185 и т. Д. В десятичном виде для REAL * 4, но 10,15000000000000035527 и т. Д. в REAL * 8: взаимное преобразование будет включать приближение, за исключением тех немногих десятичных дробей, которые представляют точное двоичное значение, например 0,625. Для REAL * 10 десятичная строка - 10,1499999999999999996530553 и т. Д. Последние 9 цифр - это восемнадцатая дробная цифра и, следовательно, двадцатая значащая цифра строки. Границы преобразования между десятичным и двоичным форматом для 80-битного формата могут быть заданы следующим образом: если десятичная строка с не более чем 18 значащими цифрами правильно округлена до 80-битного двоичного значения с плавающей запятой IEEE 754 (как на входе), тогда преобразован обратно в то же количество значащих десятичных цифр (как для вывода), тогда окончательная строка будет точно соответствовать исходной; в то время как, наоборот, если 80-битное двоичное значение с плавающей запятой IEEE 754 правильно преобразовано и (ближайшее) округлено до десятичной строки с как минимум 21 значащей десятичной цифрой, а затем преобразовано обратно в двоичный формат, оно будет точно соответствовать оригиналу.[19] Эти приближения вызывают особые затруднения при указании наилучшего значения для констант в формулах с высокой точностью, которые можно вычислить с помощью арифметика произвольной точности.
Потребность в 80-битном формате
Яркий пример необходимость минимум 64 бит точности в мантиссе формата расширенной точности - необходимость избежать потери точности при выполнении возведения в степень на двойная точность значения.[26][27][28][c] В x86 блоки с плавающей запятой не предоставляют инструкции, которые непосредственно выполняют возведение в степень. Вместо этого они предоставляют набор инструкций, которые программа может последовательно использовать для выполнения возведения в степень с использованием уравнения:
Во избежание потери точности промежуточные результаты "бревно2(Икс)" и "y·бревно2(Икс)"должны быть вычислены с гораздо более высокой точностью, потому что, по сути, и экспоненты, и значащие поля Икс должно соответствовать значимости промежуточного результата. Впоследствии поле значимости промежуточного результата разделяется между полями экспоненты и значимости конечного результата, когда 2промежуточный результат рассчитывается. Следующее обсуждение описывает это требование более подробно.
Немного распаковав, IEEE 754 двойная точность значение может быть представлено как:
куда s - знак экспоненты (0 или 1), E - несмещенная экспонента, представляющая собой целое число от 0 до 1023, и M - мантисса, представляющая собой 53-битное значение, попадающее в диапазон 1 ≤ M < 2. Отрицательные числа и ноль можно игнорировать, поскольку логарифм этих значений не определен. Для целей этого обсуждения M не имеет 53 бита точности, потому что он ограничен быть больше или равным единице, то есть скрытый бит не учитывается в точности (обратите внимание, что в ситуациях, когда M меньше 1, значение на самом деле является ненормальным и, следовательно, уже может иметь потерю точности. Эта ситуация выходит за рамки данной статьи).
Записывая это представление двойная точность число и упрощение приводит к следующему:
Этот результат демонстрирует, что при логарифме числа по основанию 2 знак экспоненты исходного значения становится знаком логарифма, показатель степени исходного значения становится целой частью мантиссы логарифма, а мантисса исходное значение преобразуется в дробную часть мантиссы логарифма.
Потому что E является целым числом в диапазоне от 0 до 1023, для представления целой части логарифма требуется до 10 бит слева от точки счисления. Потому что M попадает в диапазон 1 ≤ M < 2, значение бревно2 M попадет в диапазон 0 ≤ журнал2 M < 1 поэтому для представления дробной части логарифма требуется не менее 52 бита справа от точки счисления. Объединение 10 битов слева от точки счисления с 52 битами справа от точки счисления означает, что значимая часть логарифма должна быть вычислена с точностью не менее 62 бит. На практике значения M меньше, чем требует 53 бита справа от точки счисления и значений M меньше, чем требуется 54 бита справа от точки счисления, чтобы избежать потери точности. Уравновешивая это требование для дополнительной точности справа от точки счисления, для экспонентов меньше 512 требуется только 9 бит слева от точки счисления, а для показателей меньше 256 требуется только 8 бит слева от точки счисления.
Заключительная часть возведение в степень вычисление вычисляет 2промежуточный результат. «Промежуточный результат» состоит из целой части »я"добавлено в дробную часть"F". Если промежуточный результат отрицательный, то требуется небольшая корректировка, чтобы получить положительную дробную часть, потому что и то, и другое"я" и "F"отрицательные числа.
Для положительных промежуточных результатов:
При отрицательных промежуточных результатах:
Таким образом, целая часть промежуточного результата ("я" или же "я−1") плюс смещение становится показателем конечного результата и преобразуется в положительную дробную часть промежуточного результата: 2F или же 21+F становится знаменателем окончательного результата. Чтобы обеспечить точность 52 бита для окончательного результата, положительная дробная часть должна быть сохранена на уровне не менее 52 бита.
В заключение, точное количество битов точности, необходимое в значении промежуточного результата, в некоторой степени зависит от данных, но 64 бита достаточно, чтобы избежать потери точности в подавляющем большинстве случаев. возведение в степень вычисления с участием двойная точность числа.
Количество бит, необходимое для экспоненты формата расширенной точности следует из требования, чтобы произведение двух двойная точность числа не должны переполняться при вычислении с использованием расширенного формата. Наибольший возможный показатель двойная точность значение 1023, поэтому показатель степени наибольшего возможного произведения двух двойная точность числа - 2047 (11-битное значение). Добавление смещения для учета отрицательных показателей степени означает, что поле экспоненты должно иметь ширину не менее 12 бит.
Сочетание этих требований: 1 бит для знака, 12 бит для смещенной экспоненты и 64 бита для мантиссы означает, что для формата с расширенной точностью потребуется не менее 77 бит. Инженерные соображения привели к окончательному определению 80-битного формата (в частности, стандарт IEEE 754 требует, чтобы диапазон экспоненты формата расширенной точности соответствовал следующему по величине, четырехъядерный, формат точности 15 бит).[27]
Другой пример вычислений, в которых используется арифметика повышенной точности: итеративное уточнение схемы, используемые для косвенной очистки ошибок, накопленных в прямом решении во время обычно очень большого количества вычислений, выполняемых для числовой линейной алгебры.[30]
Языковая поддержка
- Немного C /C ++ реализации (например, Коллекция компиляторов GNU (GCC), Лязг, Intel C ++ ) воплощать в жизнь
длинный двойной
с использованием 80-битных чисел с плавающей запятой в системах x86. Однако это поведение определяется реализацией и не требуется, но разрешено стандартом, как указано для оборудования IEEE 754 в C99 стандарт «Приложение F IEC 60559 арифметика с плавающей запятой». GCC также предоставляет__float80
и__float128
типы.[31] - D язык программирования реализует
настоящий
используя самый большой размер с плавающей запятой, реализованный на оборудовании, 80 бит для x86 ЦП или двойная точность, в зависимости от того, что больше. - Object Pascal (Delphi ) имеет в дополнение к SINGLE и DOUBLE тип EXTENDED.
- В Ракетка система времени выполнения предоставляет 80-битный тип данных extflonum в системах x86.
- В Быстрый стандартная библиотека предоставляет
Поплавок80
тип данных. - В PowerBASIC Компилятор BASIC предоставляет
EXT
или жеРАСШИРЕННЫЙ
10 байт Тип данных с плавающей запятой повышенной точности.
Смотрите также
- GNU MPFR - Библиотека GNU "Надежность с плавающей запятой с множественной точностью" для C
- Шестнадцатеричное число с плавающей запятой IBM
- IEEE 754
- длинный двойной
Сноски
- ^ "Этот формат предназначен главным образом для того, чтобы помочь программистам повысить целостность их одинарного и двойного программного обеспечения и уменьшить деградацию за счет округления в двойных матричных вычислениях больших размеров, и его можно легко использовать таким образом, чтобы заменить четырехкратную замену расширенных потребностей никогда не отменять его использование ". - дизайнер x87 В. Кахан[9]
- ^ «Языки высокого уровня будут использовать расширенный (невидимый) для оценки промежуточных подвыражений, а позже могут предоставлять расширенный как декларируемый тип данных».[12](стр70)
- ^ "Наличие по крайней мере такого же количества дополнительных битов точности в расширенном, как и в поле экспоненты основного формата, который он поддерживает, значительно упрощает точное вычисление трансцендентных функций, внутренних произведений и степенной функции. yИкс."[29](стр70)
Рекомендации
- ^ IEEE 754 (2008 г., ¶ 2.1.21) определяет формат повышенной точности как «Формат, расширяющий поддерживаемый базовый формат, обеспечивая более широкую точность и диапазон».
- ^ Фрэнсис, К. (11 февраля 1965 г.). «IBM представляет мощный маленький компьютер». Директор по информации (пресс-релиз). Уайт-Плейнс, Нью-Йорк: Международная корпорация бизнес-машин (IBM). Архивировано из оригинал на 2019-07-05.
- ^ Библиотека подпрограмм (PDF). IBM 1130 (9-е изд.). Корпорация IBM. 1974. стр. 93.
- ^ Принцип работы. IBM System / 360 (9-е изд.). Корпорация IBM. 1970. стр. 41.
- ^ IBM System / 370 Принципы работы (7-е изд.). Корпорация IBM. 1980. С. 9-2–9-3.
- ^ Стейл, Майкл (2008-10-20). «Создайте свою собственную версию Microsoft BASIC для 6502». pagetable.com. п. 46. В архиве из оригинала на 30.05.2016. Получено 2016-05-30.
- ^ IEEE Computer Society (29 августа 2008 г.). Стандарт IEEE для арифметики с плавающей запятой (Отчет). IEEE. §3.7. Дои:10.1109 / IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8. IEEE Std 754-2008.
- ^ Брюэр, Кевин. "Отчет Кевина". Справочный материал IEEE-754. Получено 2012-02-19.
- ^ Кахан, Уильям (1 октября 1997 г.). «Лекционные заметки о статусе стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF). п. 5.
- ^ Эйнарссон, Бо (2005). Точность и надежность в научных вычислениях. СИАМ. стр. 9 и далее. ISBN 978-0-89871-815-7. Получено 3 мая 2013.
- ^ «Архитектуры Intel 64 и IA-32». Руководство разработчика программного обеспечения. Intel Corp. Март 2012 г. §8.2.
- ^ Кунен, Джером Т. (январь 1980 г.). «Руководство по реализации предлагаемого стандарта для арифметики с плавающей запятой». IEEE Computer: 68–79.
- ^ Кахан, Уильям (22 ноября 1983 г.). «Математика, написанная песком - hp-15C, Intel 8087 и т. Д.» (PDF).
- ^ Гольдберг, Дэвид (март 1991). «Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой» (PDF). Опросы ACM Computing. 23 (1): 192.
- ^ Хайэм, Николас (2002). «Разработка стабильных алгоритмов». Точность и стабильность численных алгоритмов. (2-е изд.). Общество промышленной и прикладной математики (SIAM). п. 43.
- ^ Семейство Motorola MC68000 (PDF). Справочное руководство для программистов. Freescale Semiconductor. 1992. С. 1–16.
- ^ Семья ColdFire (PDF). Справочное руководство для программистов. Freescale Semiconductor. 2005. с. 7-7.
- ^ «Лист данных FPA10» (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 июня 1993 г.. Получено 26 ноября 2020.
- ^ а б Кахан, Уильям (1 октября 1997 г.). «Лекционные заметки о статусе стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF).
- ^ Лист данных Intel 80C187
- ^ Руководство разработчика архитектур Intel 64 и IA-32: Vol. 1. Корпорация Intel. стр. с 4-6 по 4-9 и с 4-18 по 4-21.
- ^ Палмер, Джон Ф .; Морс, Стивен П. (1984). Праймер 8087. Wiley Press. стр.14. ISBN 0-471-87569-4.
- ^ Морс, Стивен П .; Альберт, Дуглас Дж. (1986). Архитектура 80286. Wiley Press. стр.91 –111. ISBN 0-471-83185-9.
- ^ Руководство разработчика архитектур Intel 64 и IA-32: Vol. 1. Корпорация Intel. С 8-21 по 8-22.
- ^ Чарльз Северанс (20 февраля 1998 г.). "Интервью со Стариком Плавающей точки".
- ^ Палмер, Джон Ф .; Морс, Стивен П. (1984). Праймер 8087. Wiley Press. стр.16. ISBN 0-471-87569-4.
- ^ а б Морс, Стивен П .; Альберт, Дуглас Дж. (1986). Архитектура 80286. Wiley Press. стр.96 –98. ISBN 0-471-83185-9.
- ^ Хью, Дэвид (март 1981). «Применение предложенного стандарта IEEE 754 для арифметики с плавающей запятой». IEEE Computer. 14 (3): 70–74. Дои:10.1109 / C-M.1981.220381.
- ^ Кунен, Джером Т. (январь 1980 г.). «Руководство по реализации предлагаемого стандарта арифметики с плавающей запятой». IEEE Computer: 68–79.
- ^ Деммель, Джеймс; Хида, Йозо; Кахан, Уильям; Ли, Сяое С.; Мукерджи, Сонил; Риди, Э. Джейсон (июнь 2006 г.). «Границы ошибок от сверхточного итеративного уточнения» (PDF). Транзакции ACM на математическом ПО. 32 (2): 325–351. Дои:10.1145/1141885.1141894. Получено 2014-04-18.
- ^ https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html