Юниты на последнем месте - Интуиция - PullRequest
0 голосов
/ 22 февраля 2020

Я читаю книгу Дэвида Голдберга «Что каждый ученый должен знать о числах с плавающей запятой» и натолкнулся на раздел, посвященный ULP. Он приводит пример:

Фактический результат: 0.0314 = 3.14 x 10 -2

Ближайший номер FP: 3.12 x 10 -2

Итак, ULP = (3,14 - 3,12) х 10 2 = 2

Однако, Я не могу понять, что это на самом деле означает, и мне нужна помощь. Что здесь означает «единицы»?

1 Ответ

4 голосов
/ 22 февраля 2020

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

Рассмотрим формат с плавающей точкой с β = 10 и p = 3, которые будут использоваться в этом разделе. Если результат вычисления с плавающей запятой равен 3,12 × 10 -2 , а ответ при вычислении с бесконечной точностью равен 0,0314, ясно, что это ошибка на 2 единицы в последнем месте.

Есть различия между этим отрывком и приведенным в вопросе:

  • Гольдберг описывает 3,12 × 10 -2 как результат вычисления, а не как «ближайший номер FP». Вычисление может быть последовательностью операций, и, хотя каждая операция в отдельности может создать число с плавающей запятой, наиболее близкое к результату соответствующей операции действительного числа («бесконечная точность») с учетом тех же операндов, конечный результат последовательности не обязательно является числом с плавающей точкой, ближайшим к результату, который был бы получен, если бы все операции были выполнены с операциями с действительными числами вместо операций с плавающей точкой.
  • Голдберг говорит, что в результате с плавающей точкой есть ошибка 2 ULP относительно результата действительного числа, не то, что «ULP = 2».

При заданном β = 10 и p = 3, формат использует значения и три десятичных знака цифры. ULP, единица наименьшей точности, является просто значением позиции наименее значимого ди git. Итак, для номера .0312 ULP - .0001. Этот отрывок в Гольдберге отмечает, что разница между 0,0314 и 0,0312 составляет 2 ULP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...