Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Расширенная точность относится к форматам чисел с плавающей запятой , которые обеспечивают большую точность, чем базовые форматы с плавающей запятой. [1] Форматы повышенной точности поддерживают базовый формат за счет минимизации ошибок округления и переполнения в промежуточных значениях выражений в базовом формате. В отличие от расширенной точности , арифметика произвольной точности относится к реализациям гораздо более крупных числовых типов (с объемом памяти, который обычно не является степенью двойки) с использованием специального программного обеспечения (или, реже, оборудования).

Реализации повышенной точности [ править ]

Существует долгая история расширенных форматов с плавающей запятой, восходящая почти к середине прошлого века. Различные производители использовали разные форматы для повышения точности для разных станков. Во многих случаях формат расширенной точности не совсем то же самое, что масштабирование обычных форматов с одинарной и двойной точностью, которые он предназначен для расширения. В некоторых случаях реализация была просто программным изменением формата данных с плавающей запятой, но в большинстве случаев повышенная точность была реализована аппаратно, либо встроенным в сам центральный процессор , либо, чаще, встроенным в аппаратное обеспечение вычислительной машины. дополнительный присоединенный процессор, называемый «блок с плавающей запятой » (FPU) или «процессор с плавающей запятой» ( FPP ), доступный дляCPU как быстрое устройство ввода / вывода.

Форматы расширенной точности IBM [ править ]

IBM 1130 , продан в 1965 году [2] предложили два формата с плавающей запятой: формат 32-бит «стандартной точности» и формат 40-бит «расширенной точности». Стандартный формат точность содержит 24-битное дополнение до два мантиссы в то время расширенной точность использует 32-битное дополнение до два мантиссы. Последний формат полностью использует 32-битные целочисленные операции ЦП. Характеристикой обоих форматов является 8-битовое поле, содержащее степень двойки, смещенную на 128. Арифметические операции с плавающей запятой выполняются программно, а двойная точность вообще не поддерживается. Расширенный формат занимает три 16-битных слова, а лишнее пространство просто игнорируется. [3]

/ 360 IBM System поддерживает 32-битный «короткий» формат с плавающей точкой и «длинный» формат с плавающей точкой 64-битная. [4] 360/85 и последующие System / 370 добавляют поддержку 128-битного «расширенного» формата. [5] Эти форматы все еще поддерживаются в текущем дизайне , где они теперь называются « шестнадцатеричными форматами с плавающей запятой » (HFP).

Формат расширенной точности Microsoft MBF [ править ]

Microsoft Basic порт для 6502 CPU, например, в адаптации , как Commodore BASIC , Applesoft BASIC , КИМ-1 BASIC или MicroTAN BASIC , поддерживает расширенный 40-битный вариант в формате с плавающей точкой Microsoft Binary Format (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 Standard 754 для арифметики с плавающей запятой ». [15]

В Motorola 6888x математические сопроцессоры и Motorola 68040 и 68060 процессоры поддерживают это же 64-битую мантиссу расширенного типа точности ( по аналогии с форматом Intel , хотя дополняются до 96-битного формата с 16 неиспользованными битами , вставленных между показателем и мантиссами поле [16] ). Последующие процессоры Coldfire не поддерживают этот 96-битный формат повышенной точности. [17]

Математический сопроцессор FPA10 для ранних процессоров ARM также поддерживает этот тип повышенной точности (аналогичный формату Intel, но с дополнением до 96-битного формата с 16 нулевыми битами, вставленными между полями знака и экспоненты), но без правильного округления. [18]

80-битные форматы x87 и Motorola 68881 соответствуют требованиям двойного расширенного формата IEEE 754 [19], как и 128-битный формат IEEE 754 .

формат расширенной точности x86 [ править ]

Формат расширенной точности x86 - это 80-битный формат, впервые реализованный в математическом сопроцессоре Intel 8087 и поддерживаемый всеми процессорами, основанными на архитектуре x86, которые включают блок с плавающей запятой (FPU). Этот 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 » представляет собой комбинацию целой и дробной частей на приведенной выше диаграмме.

В отличие от форматов с одинарной и двойной точностью , этот формат не использует неявный / скрытый бит . Напротив, бит 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тип, а некоторые компиляторы Fortran имеютREAL*10тип (аналог REAL*4и REAL*8). Такие компиляторы также обычно включают математические подпрограммы повышенной точности , такие как извлечение квадратного корня и тригонометрические функции , в свои стандартные библиотеки .

Рабочий диапазон [ править ]

80-битный формат с плавающей запятой имеет диапазон (включая субнормальные значения ) от примерно 3,65 × 10 -4951 до 1,18 × 10 4932 . Хотя журнал 10 (2 64) ≅ 19.266, этот формат обычно описывается как обеспечивающий приблизительно восемнадцать значащих цифр точности (нижний предел log₁₀ (2⁶³), минимальная гарантированная точность). Использование десятичного числа при разговоре о двоичном коде неудачно, потому что большинство десятичных дробей являются повторяющимися последовательностями в двоичном формате, так же как 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 значащей десятичной цифрой, а затем преобразовано обратно в двоичный формат, оно будет точно соответствовать оригиналу.если десятичная строка, содержащая не более 18 значащих цифр, правильно округлена до 80-битного двоичного значения с плавающей запятой IEEE 754 (как на входе), а затем преобразована обратно в такое же количество значащих десятичных цифр (как для вывода), то окончательный строка будет точно соответствовать оригиналу; в то время как, наоборот, если 80-битное двоичное значение с плавающей запятой IEEE 754 правильно преобразовано и (ближайшее) округлено до десятичной строки с как минимум 21 значащей десятичной цифрой, а затем преобразовано обратно в двоичный формат, оно будет точно соответствовать оригиналу.если десятичная строка, содержащая не более 18 значащих цифр, правильно округлена до 80-битного двоичного значения с плавающей запятой IEEE 754 (как на входе), а затем преобразована обратно в такое же количество значащих десятичных цифр (как для вывода), то окончательный строка будет точно соответствовать оригиналу; в то время как, наоборот, если 80-битное двоичное значение с плавающей запятой IEEE 754 правильно преобразовано и (ближайшее) округлено до десятичной строки с как минимум 21 значащей десятичной цифрой, а затем преобразовано обратно в двоичный формат, оно будет точно соответствовать оригиналу.[19] Эти приближения вызывают особые затруднения при указании наилучшего значения для констант в формулах с высокой точностью, которые могут быть вычислены с помощью арифметики произвольной точности .

Потребность в 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. ≤ M <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 F или 2 1+ F становится значащей величиной конечный результат. Чтобы обеспечить точность конечного результата в 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]
  • Язык программирования D реализует realиспользование самого большого размера с плавающей запятой, реализованного на оборудовании, 80 бит для процессоров x86 или двойной точности, в зависимости от того, что больше.
  • Object Pascal ( Delphi ) имеет, помимо SINGLE и DOUBLE, тип EXTENDED.
  • Система времени выполнения Racket предоставляет 80-битный тип данных extflonum в системах x86.
  • Swift стандартная библиотека обеспечивает Float80тип данных.
  • PowerBASIC Компилятор BASIC обеспечивает EXTили EXTENDED10 байт расширенной точности с плавающей точкой типа данных.

См. Также [ править ]

  • GNU MPFR - библиотека GNU «Надежность с плавающей запятой с множественной точностью» для C
  • Шестнадцатеричное число с плавающей запятой IBM
  • IEEE 754
  • длинный двойной
  • x87

Сноски [ править ]

  1. ^ "Этот формат предназначен, главным образом, для того, чтобы помочь программистам повысить целостность их одинарного и двойного программного обеспечения и уменьшить деградацию за счет округления в двойных матричных вычислениях больших размеров, и его можно легко использовать таким образом, чтобы заменить четырехкратное на расширенное никогда не нужно аннулировать его использование ". - конструктор x87 В. Кахан [9]
  2. ^ «Языки высокого уровня будут использовать расширенный (невидимый) для оценки промежуточных подвыражений, а позже могут предоставлять расширенный как декларируемый тип данных». [12] ( стр. 70 )
  3. ^ «Наличие по крайней мере такого же количества дополнительных битов точности в расширенном, как и в поле экспоненты основного формата, который он поддерживает, значительно упрощает точное вычисление трансцендентных функций, внутренних произведений и степенной функции y x ». [29] ( стр. 70 )

Ссылки [ править ]

  1. ^ IEEE 754 (2008 , ¶ 2.1.21) определяет формат расширенной точности как «формат, который расширяет поддерживаемый базовый формат, обеспечивая более широкую точность и диапазон».
  2. Фрэнсис, CG (11 февраля 1965 г.). «IBM представляет мощный маленький компьютер» . Директор по информации (пресс-релиз). Уайт-Плейнс, Нью-Йорк : Международная корпорация бизнес-машин (IBM). Архивировано из оригинала на 2019-07-05.
  3. ^ Библиотека подпрограмм (PDF) . IBM 1130 (9-е изд.). Корпорация IBM. 1974. стр. 93.
  4. ^ Принципы работы . IBM System / 360 (9-е изд.). Корпорация IBM. 1970. стр. 41.
  5. ^ IBM System / 370 Принципы работы (7-е изд.). Корпорация IBM. 1980. С. 9-2–9-3.
  6. ^ Steil, Майкл (2008-10-20). «Создайте свою собственную версию Microsoft BASIC для 6502» . pagetable.com . п. 46. Архивировано 30 мая 2016 года . Проверено 30 мая 2016 .
  7. ^ IEEE Computer Society (29 августа 2008 г.). Стандарт IEEE для арифметики с плавающей запятой (отчет). IEEE. §3.7. DOI : 10.1109 / IEEESTD.2008.4610935 . ISBN 978-0-7381-5752-8. IEEE Std 754-2008.
  8. ^ Брюэр, Кевин. «Отчет Кевина» . Справочный материал IEEE-754 . Проверено 19 февраля 2012 .
  9. ^ Кахан, Уильям (1 октября 1997 г.). «Конспект лекций о статусе стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF) . п. 5.
  10. ^ Einarsson, Бо (2005). Точность и надежность в научных вычислениях . СИАМ. стр. 9ff. ISBN 978-0-89871-815-7. Дата обращения 3 мая 2013 .
  11. ^ "Архитектуры Intel 64 и IA-32" . Руководство разработчика программного обеспечения. Intel Corp. Март 2012 г. §8.2.
  12. ^ Coonen, Джером Т. (январь 1980). «Руководство по реализации предлагаемого стандарта арифметики с плавающей запятой». Компьютер IEEE : 68–79.
  13. Кахан, Уильям (22 ноября 1983 г.). «Математика, написанная на песке - hp-15C, Intel 8087 и т.д.» (PDF) .
  14. ^ Голдберг, Дэвид (март 1991). «Что должен знать каждый компьютерный ученый об арифметике с плавающей запятой» (PDF) . ACM Computing Surveys . 23 (1): 192.
  15. ^ Хайэм, Николас (2002). «Разработка стабильных алгоритмов». Точность и устойчивость численных алгоритмов (2-е изд.). Общество промышленной и прикладной математики (SIAM). п. 43.
  16. ^ Семейство Motorola MC68000 (PDF) . Справочное руководство для программистов. Freescale Semiconductor. 1992. С. 1–16.
  17. ^ Семейство ColdFire (PDF) . Справочное руководство для программистов. Freescale Semiconductor. 2005. с. 7-7.
  18. ^ "Лист данных FPA10" (PDF) . chrisacorns.computinghistory.org.uk . GEC Plessey Semiconductors. 11 июня 1993 . Проверено 26 ноября 2020 года .
  19. ^ a b Кахан, Уильям (1 октября 1997 г.). «Конспект лекций о статусе стандарта IEEE 754 для двоичной арифметики с плавающей запятой» (PDF) .
  20. ^ Таблица данных Intel 80C187
  21. ^ Руководство разработчика архитектур Intel 64 и IA-32: Vol. 1 . Корпорация Intel. с 4-6 по 4-9 и с 4-18 по 4-21.
  22. ^ Палмер, Джон Ф .; Морс, Стивен П. (1984). Праймер 8087 . Wiley Press. С.  14 . ISBN 0-471-87569-4.
  23. ^ Морс, Стивен П .; Альберт, Дуглас Дж. (1986). Архитектура 80286 . Wiley Press. стр.  91 -111. ISBN 0-471-83185-9.
  24. ^ Руководство разработчика архитектур Intel 64 и IA-32: Vol. 1 . Корпорация Intel. С 8-21 по 8-22.
  25. Чарльз Северанс (20 февраля 1998 г.). «Интервью со Стариком Плавающей Точки» .
  26. ^ Палмер, Джон Ф .; Морс, Стивен П. (1984). Праймер 8087 . Wiley Press. С.  16 . ISBN 0-471-87569-4.
  27. ^ a b Морс, Стивен П .; Альберт, Дуглас Дж. (1986). Архитектура 80286 . Wiley Press. стр.  96 -98. ISBN 0-471-83185-9.
  28. ^ Хаф, Дэвид (март 1981). «Применение предложенного стандарта IEEE 754 для арифметики с плавающей запятой». Компьютер IEEE . 14 (3): 70–74. DOI : 10.1109 / CM.1981.220381 .
  29. ^ Coonen, Джером Т. (январь 1980). «Руководство по реализации предлагаемого стандарта арифметики с плавающей запятой». Компьютер IEEE : 68–79.
  30. ^ Деммель, Джеймс; Хида, Йодзо; Кахан, Уильям ; Ли, Сяойе С .; Мукерджи, Сонил; Риди, Э. Джейсон (июнь 2006 г.). «Границы ошибок от сверхточного итеративного уточнения» (PDF) . Транзакции ACM на математическом программном обеспечении . 32 (2): 325–351. DOI : 10.1145 / 1141885.1141894 . Проверено 18 апреля 2014 .
  31. ^ https://gcc.gnu.org/onlinedocs/gcc/Floating-Types.html