Это неправильно. Очень неправильно. Учтите, что каждая операция может накапливать некоторую ошибку - ½ ULP является максимумом (в режиме округления до ближайшего), поэтому ¼ может быть средним значением. Таким образом, 17 операций достаточно, чтобы накапливать более 4 ULP ошибок только из средних эффектов. 1 Современные компьютеры выполняют миллиарды операций в секунду. Сколько операций программа выполнит между своими входами и последующим сравнением? Это зависит от программы, но это может быть ноль, десятки, тысячи или миллионы только для «обычного» использования. (Допустим, мы исключаем миллиарды, потому что тогда человек начинает использовать медленно, поэтому мы можем называть это специальное программное обеспечение, а не обычное.)
Но это еще не все. Предположим, мы добавили несколько чисел около 1, а затем вычли число, которое примерно равно сумме. Может быть, адды получат общую ошибку около 2 ULP Но когда мы вычитаем, результат может быть около 2 -10 вместо 1. Таким образом, ULP в 2 -10 в 1024 раза меньше, чем ULP в 1. Эта ошибка, которая равно 2 ULP относительно 1, равно 2048 ULP относительно результата вычитания. К сожалению! 4 ULP не будет сокращать это. Это должно быть 4 ULP некоторых других задействованных чисел, а не ULP результата.
На самом деле, характеризовать ошибку в общем сложно и является предметом целой области исследования, численный анализ . 4 не ответ.
Сноска
1 Ошибки будут различаться по направлению, поэтому некоторые из них будут отменены. Поведение может быть смоделировано как случайное блуждание, а средняя ошибка может быть пропорциональна квадратному корню из числа выполненных операций.