ИЭЭЭ 754-1985
ИЭЭЭ 754-1985 [ 1 ] — исторический отраслевой стандарт представления чисел с плавающей запятой в компьютерах , официально принятый в 1985 году и замененный в 2008 году стандартом IEEE 754-2008 , а затем снова в 2019 году незначительной редакцией IEEE 754-2019 . [ 2 ] За 23 года своего существования это был наиболее широко используемый формат вычислений с плавающей запятой. Он был реализован программно, в виде библиотек с плавающей запятой , и аппаратно, в инструкциях многих CPU и FPU . Первой интегральной схемой , реализовавшей проект того, что впоследствии стало стандартом IEEE 754-1985, была Intel 8087 .
IEEE 754-1985 представляет числа в двоичном формате , обеспечивая определения четырех уровней точности, из которых наиболее часто используются два:
Уровень | Ширина | Диапазон с полной точностью | Точность [ а ] |
---|---|---|---|
Одинарная точность | 32 бита | ±1.18 × 10 −38 до ±3,4 × 10 38 | Примерно 7 десятичных цифр |
Двойная точность | 64 бита | ±2.23 × 10 −308 до ±1,80 × 10 308 | Примерно 16 десятичных цифр |
Стандарт также определяет представления для положительной и отрицательной бесконечности , « отрицательный ноль », пять исключений для обработки недопустимых результатов, таких как деление на ноль , специальные значения, называемые NaN, для представления этих исключений, денормализованные числа для представления чисел, меньших, чем показано выше, и четыре округления. режимы.
Представление чисел
[ редактировать ]Числа с плавающей запятой в формате IEEE 754 состоят из трех полей: знакового бита , смещенной экспоненты и дроби. Следующий пример иллюстрирует значение каждого из них.
Десятичное число 0,15625 10 , представленное в двоичном виде, равно 0,00101 2 (то есть 1/8 + 1/32). счисления (Нижние индексы обозначают базу .) Аналогично экспоненциальному обозначению , где числа записываются так, чтобы слева от десятичной точки была одна ненулевая цифра, мы переписываем это число так, чтобы оно имело один бит 1 слева от " двоичная точка». Мы просто умножаем на соответствующую степень 2, чтобы компенсировать сдвиг битов влево на три позиции:
Теперь мы можем считать дробь и показатель степени: дробь равна 0,01 2 , а показатель степени равен −3.
Как показано на рисунках, в представлении этого числа в стандарте IEEE 754 есть три поля:
- знак = 0, поскольку число положительное. (1 означает отрицательный результат.)
- смещенный показатель степени = −3 + «смещение». В одинарной точности смещение равно 127 , поэтому в этом примере показатель смещения равен 124; в двойной точности смещение равно 1023 , поэтому показатель смещения в этом примере равен 1020.
- дробь = .01000… 2 .
IEEE 754 добавляет смещение к показателю степени, так что числа во многих случаях можно удобно сравнивать с помощью того же оборудования, которое сравнивает целые числа со знаком , дополняемые до двух . Используя смещенную экспоненту, меньшее из двух положительных чисел с плавающей запятой получится «меньше», чем большее, в том же порядке, что и для целых чисел со знаком и величиной . Если два числа с плавающей запятой имеют разные знаки, сравнение знаков и величин также работает со смещенными показателями. Однако если оба числа с плавающей запятой со смещенной экспонентой отрицательны, то порядок должен быть обратным. Если бы показатель степени был представлен, скажем, как число с дополнением до 2, сравнение с целью определить, какое из двух чисел больше, было бы не так удобно.
Ведущий бит 1 опускается, поскольку все числа, кроме нуля, начинаются с ведущей 1; ведущая единица является неявной и на самом деле ее не нужно сохранять, что дает дополнительную точность для слова «бесплатно».
Ноль
[ редактировать ]Число ноль представлено особым образом:
- знак = 0 для положительного нуля , 1 для отрицательного нуля .
- смещенный показатель = 0.
- дробь = 0.
Денормализованные числа
[ редактировать ]Представления чисел, описанные выше, называются нормализованными, что означает, что неявной ведущей двоичной цифрой является 1. Чтобы уменьшить потерю точности при возникновении потери значения , IEEE 754 включает возможность представлять дроби, меньшие, чем это возможно в нормализованном представлении, путем создания неявная старшая цифра a 0. Такие числа называются денормальными . Они не содержат столько значащих цифр , как нормализованное число, но допускают постепенную потерю точности, когда результат операции не совсем равен нулю, но слишком близок к нулю, чтобы его можно было представить нормализованным числом.
Денормальное число представляется смещенным показателем степени, состоящим из всех нулевых битов, что представляет показатель степени -126 в одинарной точности (не -127) или -1022 в двойной точности (не -1023). [ 3 ] Напротив, наименьшая смещенная экспонента, представляющая нормальное число, равна 1 (см. примеры ниже).
Представление нечисловых чисел
[ редактировать ]Поле смещенной экспоненты заполняется всеми единицами битов, что указывает либо на бесконечность, либо на недопустимый результат вычисления.
Положительная и отрицательная бесконечность
[ редактировать ]Положительная и отрицательная бесконечность изображаются следующим образом:
- знак = 0 для положительной бесконечности, 1 для отрицательной бесконечности.
- смещенная экспонента = все 1 бит.
- дробь = все 0 бит.
НЭН
[ редактировать ]Некоторые операции арифметики с плавающей запятой недопустимы, например извлечение квадратного корня из отрицательного числа. Акт достижения недопустимого результата называется исключением с плавающей запятой. Исключительный результат представлен специальным кодом, называемым NaN, что означает « Не число ». Все NaN в IEEE 754-1985 имеют следующий формат:
- знак = либо 0, либо 1.
- смещенная экспонента = все 1 бит.
- дробь = что угодно, кроме всех 0 бит (поскольку все 0 бит представляют бесконечность).
Дальность и точность
[ редактировать ]Точность определяется как минимальная разница между двумя последовательными представлениями мантиссы; таким образом, это функция только в мантиссе; в то время как разрыв определяется как разница между двумя последовательными числами. [ 4 ]
Одинарная точность
[ редактировать ]Числа одинарной точности занимают 32 бита. В одинарной точности:
- Положительные и отрицательные числа, ближайшие к нулю (представленные денормализованным значением со всеми нулями в поле показателя и двоичным значением 1 в поле дроби), равны
- ±2 −23 × 2 −126 ≈ ±1.40130 × 10 −45
- Положительные и отрицательные нормализованные числа, ближайшие к нулю (представленные двоичным значением 1 в поле показателя и 0 в поле дроби):
- ±1 × 2 −126 ≈ ±1.17549 × 10 −38
- Конечные положительные и конечные отрицательные числа, наиболее удаленные от нуля (представленные значением с 254 в поле показателя и всеми единицами в поле дроби), равны
- ±(2−2 −23 ) × 2 127 [ 5 ] ≈ ±3.40282 × 10 38
Некоторые примеры значений диапазона и разрыва для заданных показателей степени с одинарной точностью:
Фактическая экспонента (несмещенная) | Опыт (предвзятый) | Минимум | Максимум | Зазор |
---|---|---|---|---|
−1 | 126 | 0.5 | ≈ 0.999999940395 | ≈ 5,96046e-8 |
0 | 127 | 1 | ≈ 1.999999880791 | ≈ 1,19209e-7 |
1 | 128 | 2 | ≈ 3.999999761581 | ≈ 2,38419e-7 |
2 | 129 | 4 | ≈ 7.999999523163 | ≈ 4,76837e-7 |
10 | 137 | 1024 | ≈ 2047.999877930 | ≈ 1,22070e-4 |
11 | 138 | 2048 | ≈ 4095.999755859 | ≈ 2,44141e-4 |
23 | 150 | 8388608 | 16777215 | 1 |
24 | 151 | 16777216 | 33554430 | 2 |
127 | 254 | ≈ 1,70141e38 | ≈ 3,40282e38 | ≈ 2,02824e31 |
Например, число 16 777 217 не может быть закодировано как 32-битное число с плавающей запятой, поскольку оно будет округлено до 16 777 216. Однако все целые числа в представимом диапазоне, являющиеся степенью 2, могут храниться в 32-битном формате с плавающей запятой без округления.
Двойная точность
[ редактировать ]Числа двойной точности занимают 64 бита. В двойной точности:
- Положительные и отрицательные числа, ближайшие к нулю (представленные денормализованным значением со всеми нулями в поле Exp и двоичным значением 1 в поле Fraction), равны
- ±2 −52 × 2 −1022 ≈ ±4.94066 × 10 −324
- Положительные и отрицательные нормализованные числа, ближайшие к нулю (представленные двоичным значением 1 в поле Exp и 0 в поле дроби), равны
- ±1 × 2 −1022 ≈ ±2.22507 × 10 −308
- Конечные положительные и конечные отрицательные числа, наиболее удаленные от нуля (представленные значением с 2046 в поле Exp и всеми единицами в поле дроби), равны
- ±(2−2 −52 ) × 2 1023 [ 5 ] ≈ ±1.79769 × 10 308
Некоторые примеры значений диапазона и разрыва для заданных показателей степени в двойной точности:
Фактическая экспонента (несмещенная) | Опыт (предвзятый) | Минимум | Максимум | Зазор |
---|---|---|---|---|
−1 | 1022 | 0.5 | ≈ 0.999999999999999888978 | ≈ 1,11022e-16 |
0 | 1023 | 1 | ≈ 1.999999999999999777955 | ≈ 2.22045e-16 |
1 | 1024 | 2 | ≈ 3.999999999999999555911 | ≈ 4.44089e-16 |
2 | 1025 | 4 | ≈ 7.999999999999999111822 | ≈ 8.88178e-16 |
10 | 1033 | 1024 | ≈ 2047.999999999999772626 | ≈ 2,27374e-13 |
11 | 1034 | 2048 | ≈ 4095.999999999999545253 | ≈ 4,54747e-13 |
52 | 1075 | 4503599627370496 | 9007199254740991 | 1 |
53 | 1076 | 9007199254740992 | 18014398509481982 | 2 |
1023 | 2046 | ≈ 8.98847e307 | ≈ 1,79769e308 | ≈ 1,99584e292 |
Расширенные форматы
[ редактировать ]Стандарт также рекомендует использовать расширенные форматы для выполнения внутренних вычислений с более высокой точностью, чем та, которая требуется для конечного результата, чтобы минимизировать ошибки округления: стандарт определяет только минимальные требования к точности и показателю для таких форматов. x87 . 80-битный расширенный формат — это наиболее часто реализуемый расширенный формат, отвечающий этим требованиям
Примеры
[ редактировать ]Вот несколько примеров представлений IEEE 754 одинарной точности:
Тип | Знак | Фактический показатель | Опыт (предвзятый) | Поле экспоненты | Поле дроби | Ценить |
---|---|---|---|---|---|---|
Ноль | 0 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | 0.0 |
Отрицательный ноль | 1 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | −0.0 |
Один | 0 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | 1.0 |
Минус один | 1 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | −1.0 |
Наименьшее денормализованное число | * | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0001 | ±2 −23 × 2 −126 = ±2 −149 ≈ ±1.4 × 10 −45 |
«Среднее» денормализованное число | * | −126 | 0 | 0000 0000 | 100 0000 0000 0000 0000 0000 | ±2 −1 × 2 −126 = ±2 −127 ≈ ±5.88 × 10 −39 |
Наибольшее денормализованное число | * | −126 | 0 | 0000 0000 | 111 1111 1111 1111 1111 1111 | ±(1−2 −23 ) × 2 −126 ≈ ±1.18 × 10 −38 |
Наименьшее нормализованное число | * | −126 | 1 | 0000 0001 | 000 0000 0000 0000 0000 0000 | ±2 −126 ≈ ±1.18 × 10 −38 |
Наибольшее нормализованное число | * | 127 | 254 | 1111 1110 | 111 1111 1111 1111 1111 1111 | ±(2−2 −23 ) × 2 127 ≈ ±3.4 × 10 38 |
Положительная бесконечность | 0 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | +∞ |
Отрицательная бесконечность | 1 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | −∞ |
Не число | * | 128 | 255 | 1111 1111 | не ноль | НЭН |
* Знаковый бит может быть либо 0, либо 1. |
Сравнение чисел с плавающей запятой
[ редактировать ]Каждая возможная комбинация битов представляет собой либо NaN, либо число с уникальным значением в аффинно расширенной системе действительных чисел с соответствующим порядком, за исключением двух комбинаций битов для отрицательного нуля и положительного нуля, которые иногда требуют особого внимания (см. ниже). . Двоичное представление обладает особым свойством: за исключением NaN, любые два числа можно сравнивать как целые числа по знаку и величине ( применяются проблемы с порядком байтов ). При сравнении целых чисел с дополнением до 2 : Если биты знака различаются, отрицательное число предшествует положительному числу, поэтому дополнение до 2 дает правильный результат (за исключением того, что отрицательный ноль и положительный ноль следует считать равными). Если оба значения положительны, сравнение с дополнением до двух снова дает правильный результат. В противном случае (два отрицательных числа) правильный порядок FP противоположен порядку дополнения до 2.
Ошибки округления, присущие вычислениям с плавающей запятой, могут ограничить использование сравнений для проверки точного равенства результатов. Выбор приемлемого диапазона – сложная тема. Распространенным методом является использование значения эпсилон сравнения для выполнения приблизительных сравнений. [ 6 ] В зависимости от того, насколько снисходительны сравнения, общие значения включают в себя: 1e-6
или 1e-5
для одинарной точности и 1e-14
для двойной точности. [ 7 ] [ 8 ] Другой распространенный метод — ULP, который проверяет разницу в последних цифрах, эффективно проверяя, на сколько шагов различаются два значения. [ 9 ]
Хотя отрицательный ноль и положительный ноль обычно считаются равными для целей сравнения, в некоторых языках программирования реляционные операторы и подобные конструкции рассматривают их как разные. Согласно спецификации языка Java , [ 10 ] операторы сравнения и равенства рассматривают их как равные, но Math.min()
и Math.max()
различать их (официально начиная с версии Java 1.1, но фактически с 1.1.1), как и методы сравнения equals()
, compareTo()
и даже compare()
классов Float
и Double
.
Округление чисел с плавающей запятой
[ редактировать ]Стандарт IEEE имеет четыре различных режима округления; первый используется по умолчанию; остальные называются направленными округлениями .
- Round to Nearest – округляет до ближайшего значения; если число попадает на полпути, оно округляется до ближайшего значения с четным (нулевым) младшим битом, что означает, что оно округляется в большую сторону в 50% случаев (в IEEE 754-2008 этот режим называется roundTiesToEven, чтобы отличить его от другого раунда). - режим ближайшего)
- Round to 0 – направленное округление к нулю
- Округление в сторону +∞ – направленное округление в сторону положительной бесконечности.
- Округление в сторону −∞ – направленное округление в сторону отрицательной бесконечности.
Расширение действительных чисел
[ редактировать ]Стандарт IEEE использует (и расширяет) аффинно расширенную систему действительных чисел с отдельными положительными и отрицательными бесконечностями. Во время разработки стандарта было предложено включить проективно расширенную систему действительных чисел с одной беззнаковой бесконечностью, предоставив программистам возможность выбора режима. Однако в целях снижения сложности окончательного стандарта от проективного режима отказались. этот проекционный режим . Сопроцессоры Intel 8087 и Intel 80287 с плавающей запятой поддерживают [ 11 ] [ 12 ] [ 13 ]
Функции и предикаты
[ редактировать ]Стандартные операции
[ редактировать ]Должны быть предусмотрены следующие функции:
- Складывать, вычитать, умножать, делить
- Квадратный корень
- Остаток с плавающей запятой. Это не похоже на обычную операцию по модулю : для двух положительных чисел она может быть отрицательной. Он возвращает точное значение x–(round(x/y)·y) .
- Округлить до ближайшего целого числа . Для ненаправленного округления, когда находится посередине между двумя целыми числами, выбирается четное целое число.
- Операции сравнения. Помимо более очевидных результатов, IEEE 754 определяет, что −∞ = −∞, +∞ = +∞ и x ≠
NaN
для любого x (включаяNaN
).
Рекомендуемые функции и предикаты
[ редактировать ]copysign(x,y)
возвращает x со знаком y, поэтомуabs(x)
равноcopysign(x,1.0)
. Это одна из немногих операций, которая работает с NaN, напоминая арифметику. Функцияcopysign
является новым в стандарте C99.- −x возвращает x с обратным знаком. В некоторых случаях это отличается от 0−x, особенно когда x равно 0. Таким образом, −(0) равно −0, но знак 0−0 зависит от режима округления.
scalb(y, N)
logb(x)
finite(x)
предикат Inf для «x — конечное значение», эквивалентный −Inf < x <isnan(x)
предикат для «x — это NaN», эквивалентный «x ≠ x»x <> y
, поведение которого отличается от NOT(x = y) из-за NaN.unordered(x, y)
истинно, когда «x неупорядочен с y», т. е. либо x, либо y является NaN.class(x)
nextafter(x,y)
возвращает следующее представимое значение от x в направлении к y
История
[ редактировать ]В 1976 году Intel начала разработку сопроцессора с плавающей запятой . [ 14 ] [ 15 ] Intel надеялась, что сможет продать чип, содержащий хорошие реализации всех операций, присутствующих в самых разных библиотеках математического программного обеспечения. [ 14 ] [ 16 ]
Джон Палмер, руководивший проектом, считал, что эти усилия должны быть подкреплены стандартным объединением операций с плавающей запятой на разных процессорах. Он связался с Уильямом Каханом из Калифорнийского университета , который помог повысить точность калькуляторов Hewlett-Packard . Кахан предложил Intel использовать систему с плавающей запятой VAX компании Digital Equipment Corporation (DEC). Первый VAX, VAX-11/780, вышел только в конце 1977 года, и его плавающая точка получила высокую оценку. Однако, стремясь вывести свой чип на как можно более широкий рынок, Intel хотела получить как можно лучший результат с плавающей запятой, и Кахан приступил к составлению спецификаций. [ 14 ] Кахан изначально рекомендовал использовать десятичную систему счисления с плавающей запятой. [ 17 ] [ ненадежный источник? ] но аппаратная конструкция сопроцессора была слишком далеко проработана, чтобы внести такие изменения.
Работа внутри Intel обеспокоила других поставщиков, которые предприняли усилия по стандартизации, чтобы обеспечить «равные условия игры». Кахан присутствовал на втором заседании рабочей группы по стандартам IEEE 754, состоявшемся в ноябре 1977 года. Впоследствии он получил разрешение от Intel выдвинуть проект предложения, основанный на его работе над их сопроцессором; ему было разрешено объяснить детали формата и его обоснование, но не что-либо, связанное с архитектурой реализации Intel. Проект был написан в соавторстве с Джеромом Куненом и Гарольдом Стоуном и первоначально был известен как «предложение Кахана-Кунена-Стоуна» или «формат KCS». [ 14 ] [ 15 ] [ 16 ] [ 18 ]
Поскольку 8-битный показатель степени был недостаточно широк для некоторых операций, необходимых для чисел двойной точности, например, для хранения произведения двух 32-битных чисел, [ 19 ] Поэтому и в предложении Кахана, и в контрпредложении DEC использовалось 11 бит, как и в проверенном временем 60-битном формате с плавающей запятой CDC 6600 1965 года. [ 15 ] [ 18 ] [ 20 ] Предложение Кахана также предусматривало бесконечности, которые полезны при работе с условиями деления на ноль; нечисловые значения, которые полезны при работе с недопустимыми операциями; денормальные числа , которые помогают смягчить проблемы, вызванные недостаточным заполнением; [ 18 ] [ 21 ] [ 22 ] и более сбалансированное смещение экспоненты , которое может помочь избежать переполнения и потери значения при получении обратного числа. [ 23 ] [ 24 ]
Еще до утверждения проект стандарта был внедрен рядом производителей. [ 25 ] [ 26 ] Intel 8087, анонсированный в 1980 году, был первым чипом, реализовавшим проект стандарта.
В 1980 году Intel 8087 , уже был выпущен чип [ 27 ] но DEC по-прежнему выступала против, в частности, ненормальных чисел, из-за проблем с производительностью и поскольку это дало бы DEC конкурентное преимущество для стандартизации формата DEC.
Споры по поводу постепенного сокращения расходов продолжались до 1981 года, когда эксперт, нанятый DEC для оценки ситуации, встал на сторону несогласных. DEC провела исследование, чтобы продемонстрировать, что постепенное сокращение расходов было плохой идеей, но исследование пришло к противоположному выводу, и DEC уступила. В 1985 году стандарт был ратифицирован, но годом ранее он уже стал стандартом де-факто. реализовано многими производителями. [ 15 ] [ 18 ] [ 5 ]
См. также
[ редактировать ]- ИЭЭЭ 754
- Minifloat для простых примеров свойств чисел с плавающей запятой IEEE 754.
- Арифметика с фиксированной запятой
Примечания
[ редактировать ]- ^ Точность: точность количества десятичных цифр рассчитывается через число_of_mantissa_bits * Log 10 (2). Таким образом, ~7,2 и ~15,9 для одинарной и двойной точности соответственно.
Ссылки
[ редактировать ]- ^ Стандарт IEEE для двоичной арифметики с плавающей запятой . 1985. doi : 10.1109/IEESTD.1985.82928 . ISBN 0-7381-1165-1 .
- ^ «ANSI/IEEE Std 754-2019» . 754r.ucbtest.org . Проверено 6 августа 2019 г.
- ^ Хеннесси (2009). Компьютерная организация и дизайн . Морган Кауфманн. п. 270 . ISBN 9780123744937 .
- ^ Хоссам А.Х. Фахми; Шломо Васер; Майкл Дж. Флинн, Компьютерная арифметика (PDF) , заархивировано из оригинала (PDF) 8 октября 2010 г. , получено 2 января 2011 г.
- ^ Перейти обратно: а б с Уильям Кахан (1 октября 1997 г.). «Конспекты лекций о состоянии IEEE 754» (PDF) . Калифорнийский университет в Беркли . Проверено 12 апреля 2007 г.
- ^ «Годо math_funcs.h» . GitHub.com . 30 июля 2022 г.
- ^ «Годо math_defs.h» . GitHub.com . 30 июля 2022 г.
- ^ «Годо MathfEx.cs» . GitHub.com .
- ^ «Сравнение чисел с плавающей запятой, издание 2012 г.» . Randomascii.wordpress.com . 26 февраля 2012 г.
- ^ «Язык Java и характеристики виртуальных машин» . Java-документация .
- ^ Джон Р. Хаузер (март 1996 г.). «Обработка исключений с плавающей запятой в числовых программах» (PDF) . Транзакции ACM в языках и системах программирования . 18 (2): 139–174. дои : 10.1145/227699.227701 . S2CID 9820157 .
- ^ Дэвид Стивенсон (март 1981 г.). «Задача IEEE P754: предлагаемый стандарт двоичной арифметики с плавающей запятой». IEEE-компьютер . 14 (3): 51–62. дои : 10.1109/CM.1981.220377 . S2CID 15523399 .
- ^ Уильям Кахан и Джон Палмер (1979). «О предлагаемом стандарте с плавающей запятой». Информационный бюллетень SIGNUM . 14 (Специальный): 13–21. дои : 10.1145/1057520.1057522 . S2CID 16981715 .
- ^ Перейти обратно: а б с д «Intel и числа с плавающей запятой — обновление одного из самых успешных стандартов в отрасли — технологическое видение стандарта с плавающей запятой» (PDF) . Интел . 2016. Архивировано из оригинала (PDF) 4 марта 2016 г. Проверено 30 мая 2016 г. (11 страниц)
- ^ Перейти обратно: а б с д «Интервью со стариком, занимающимся плавающей запятой» . cs.berkeley.edu. 20 февраля 1998 г. Проверено 30 мая 2016 г.
- ^ Перейти обратно: а б Вёр, Джек, изд. (1 ноября 1997 г.). «Разговор с Уильямом Каханом» . Доктор Добб . drdobbs.com . Проверено 30 мая 2016 г.
- ^ В. Кахан 2003, чел. комм. Майку Коулишоу и другим после встречи IEEE 754
- ^ Перейти обратно: а б с д «IEEE 754: Интервью с Уильямом Каханом» (PDF) . dr-chuck.com . Проверено 2 июня 2016 г.
- ^ «IEEE против двоичного формата Microsoft; проблемы округления (завершено)» . Поддержка Майкрософт . Майкрософт . 21 ноября 2006 г. Идентификатор статьи KB35826, Q35826. Архивировано из оригинала 28 августа 2020 г. Проверено 24 февраля 2010 г.
- ^ Торнтон, Джеймс Э. (1970). Написано в Лаборатории перспективного проектирования Control Data Corporation. Проектирование компьютера: The Control Data 6600 (PDF) (1-е изд.). Гленвью, Иллинойс, США: Скотт, Форесман и компания . LCCN 74-96462 . Архивировано (PDF) из оригинала 28 августа 2020 г. Проверено 2 июня 2016 г. (1+13+181+2+2 страницы)
- ^ Кахан, Уильям Мортон . «Зачем нам нужен стандарт арифметики с плавающей запятой?» (PDF) . cs.berkeley.edu . Проверено 2 июня 2016 г.
- ^ Кахан, Уильям Мортон ; Дарси, Джозеф Д. «Как числа с плавающей запятой в Java вредят всем и повсюду» (PDF) . cs.berkeley.edu . Проверено 2 июня 2016 г.
- ^ Тернер, Питер Р. (21 декабря 2013 г.). Численный анализ и параллельная обработка: лекции, прочитанные в Ланкастере… . Спрингер. ISBN 978-3-66239812-8 . Проверено 30 мая 2016 г.
- ^ «Имена стандартизированных форматов с плавающей запятой» (PDF) . cs.berkeley.edu . Проверено 2 июня 2016 г.
- ^ Чарльз Северанс (20 февраля 1998 г.). «Интервью со стариком, занимающимся плавающей запятой» .
- ^ Чарльз Северанс . «История формата чисел с плавающей запятой IEEE» . Связи. Архивировано из оригинала 20 ноября 2009 г.
- ^ «Молекулярные выражения: наука, оптика и вы — Olympus MIC-D: Галерея интегральных схем — математический сопроцессор Intel 8087» . micro.magnet.fsu.edu . Проверено 30 мая 2016 г.
Дальнейшее чтение
[ редактировать ]- Чарльз Северанс (март 1998 г.). «IEEE 754: Интервью с Уильямом Каханом» (PDF) . IEEE-компьютер . 31 (3): 114–115. дои : 10.1109/MC.1998.660194 . S2CID 33291145 . Архивировано из оригинала (PDF) 23 августа 2009 г. Проверено 28 апреля 2008 г.
- Дэвид Голдберг (март 1991 г.). «Что должен знать каждый ученый-компьютерщик об арифметике с плавающей запятой» (PDF) . Обзоры вычислительной техники ACM . 23 (1): 5–48. дои : 10.1145/103162.103163 . S2CID 222008826 . Проверено 28 апреля 2008 г.
- Крис Хекер (февраль 1996 г.). «Давайте перейдем к (плавающей) точке» (PDF) . Журнал разработчиков игр : 19–24. ISSN 1073-922X . Архивировано из оригинала (PDF) 3 февраля 2007 г.
- Дэвид Моннио (май 2008 г.). «Подводные камни проверки вычислений с плавающей запятой» . Транзакции ACM в языках и системах программирования . 30 (3): 1–41. arXiv : cs/0701192 . дои : 10.1145/1353445.1353446 . ISSN 0164-0925 . S2CID 218578808 . : Сборник неинтуитивного поведения операций с плавающей запятой в популярных архитектурах, имеющий значение для проверки и тестирования программ.
Внешние ссылки
[ редактировать ]- Сравнение поплавков
- Coprocessor.info: изображения x87 FPU, информация о разработке и производителе.
- IEEE 854-1987 — История и протоколы
- Онлайн-конвертер IEEE754 (одинарной и двойной точности)
вопрос