Машина эпсилон умножения

Я пытаюсь лучше понять арифметику с плавающей точкой. Я знаю, что машина epsilon (e) определяется как разница между 1 и следующим наибольшим числом (то есть следующее наибольшее число после 1, которое можно точно представить в плавающей запятой, равно 1+e).

Тем не менее, что я получу в плавающей запятой, когда я умножаю (1+e) ​​* (1+e)? Теоретически это должно быть 1 + 2*e+ e^2, но (при условии e<1) e^2

1 ответ

Как отмечено в комментариях, eps^2 точно представлен в любой рассматриваемой системе с плавающей запятой. Но при добавлении к чему-либо>= 1 оно просто обрезается. Недостаточно битов точности, чтобы включить его, а термин "1.0" указывает на показатель степени. Следовательно -

(1.0 + eps)^2 -> 1.0 + 2*eps

Вам нужно будет проверить это на вашем оборудовании. Я усвоил сложный способ, которым аппаратное обеспечение с плавающей запятой не всегда ведет себя так, как можно было ожидать, и я видел, как передовое числовое программное обеспечение выполняет код инициализации не только для аппроксимации используемого EPS (не всегда определяемого системой с плавающей запятой), но и для переноса. проверка поведения eps, на которое рассчитывает алгоритм для получения правильных результатов.

Профессионалы никогда ничего не принимают как должное. Иногда аппаратное обеспечение fp реализовано неправильно. Иногда системы fp имеют странное поведение граничных условий. Доверяй, но проверяй, будет моей рекомендацией.

Другие вопросы по тегам