Точная теорема о вычитании чисел с плавающей точкой
В арифметике с плавающей точкой лемма Стербенца или лемма Стербенца [1] — это теорема, дающая условия, при которых разности с плавающей точкой вычисляются точно. Она названа в честь Пэта Х. Стербенца, который опубликовал ее вариант в 1974 году. [2]
то также является числом с плавающей точкой. Таким образом, правильно округленное вычитание с плавающей точкой
вычисляется точно.
Лемма Стербенца применима к IEEE 754 , наиболее широко используемой системе чисел с плавающей точкой в компьютерах.
Доказательство
Пусть — основание системы счисления с плавающей точкой и точность.
Рассмотрим сначала несколько простых случаев:
Если равно нулю , то , а если равно нулю, то , поэтому результат тривиален, поскольку отрицание с плавающей точкой всегда точное.
Если результат равен нулю и, следовательно, точен.
Если то мы также должны иметь так . В этом случае , так что результат следует из теоремы, ограниченной .
Если , то мы можем записать с помощью , поэтому результат следует из теоремы, ограниченной .
Для остальной части доказательства предположим без потери общности.
Запишите их через положительные интегральные мантиссы и минимальные показатели степеней :
Обратите внимание, что и могут быть ниже нормы — мы не предполагаем .
Вычитание дает:
Пусть . Так как имеем:
, поэтому , из чего мы можем сделать вывод, что является целым числом и, следовательно, является ; и
, так .
Далее, поскольку , то имеем , так что
что подразумевает, что
Следовательно
так же как и число с плавающей точкой. ◻
Примечание: Даже если и являются нормальными, т. е . , , мы не можем доказать, что и, следовательно, не можем доказать, что также является нормальным. Например, разность двух наименьших положительных нормальных чисел с плавающей точкой и равна , что обязательно является субнормальным. В системах с плавающей точкой без субнормальных чисел , таких как процессоры в нестандартном режиме сброса в ноль вместо стандартного постепенного переполнения, лемма Стербенца не применяется.
Лемма Стербенца утверждает, что если и являются достаточно близкими числами с плавающей точкой, то их разность вычисляется точно с помощью арифметики с плавающей точкой , без необходимости округления.
Феномен катастрофического сокращения заключается в том, что если и являются приближениями к истинным числам и —независимо от того, возникают ли приближения из-за ошибки округления или усечения ряда, или из-за физической неопределенности, или чего-либо еще — погрешность разницы от желаемой разницы обратно пропорциональна . Таким образом, чем ближе и , тем хуже может быть приближение к , даже если само вычитание вычисляется точно.
Другими словами, лемма Стербенца показывает, что вычитание соседних чисел с плавающей точкой является точным, но если имеющиеся числа являются приближенными, то даже их точная разность может быть далека от разности чисел, которые требуется вычесть.
Использование в численном анализе
Лемма Стербенца играет важную роль в доказательстве теорем о границах ошибок в численном анализе алгоритмов с плавающей точкой. Например, формула Герона
для площади треугольника со сторонами длиной , и , где — полупериметр, может давать плохую точность для длинных узких треугольников, если вычислять ее непосредственно в арифметике с плавающей точкой. Однако для можно доказать , что альтернативная формула
с помощью леммы Стербенца имеет низкую прямую ошибку для всех входных данных. [3] [4] [5]
^ Sterbenz, Pat H. (1974). Вычисления с плавающей точкой. Englewood Cliffs, NJ, США: Prentice-Hall. Теорема 4.3.1 и следствие, стр. 138. ISBN0-13-322495-3.
^ Кахан, В. (2014-09-04). "Неверный расчет площади и углов игольчатого треугольника" (PDF) . Конспект лекций для вводных занятий по численному анализу . Получено 17 сентября 2020 г.
^ Голдберг, Дэвид (март 1991 г.). «Что каждый специалист по информатике должен знать об арифметике с плавающей точкой». ACM Computing Surveys . 23 (1). Нью-Йорк, штат Нью-Йорк, США: Ассоциация вычислительной техники: 5–48. doi :10.1145/103162.103163. ISSN 0360-0300. S2CID 222008826. Получено 17 сентября 2020 г.
^ Boldo, Sylvie (апрель 2013 г.). Nannarelli, Alberto; Seidel, Peter-Michael; Tang, Ping Tak Peter (ред.). How to Compute the Area of a Triangle: a Formal Revisit. 21st IEEE Symposium on Computer Arithmetic. IEEE Computer Society. стр. 91–98. doi :10.1109/ARITH.2013.29. ISBN978-0-7695-4957-6. ISSN 1063-6889.