stringtranslate.com

Уменьшение ошибок с плавающей точкой

Смягчение ошибок с плавающей точкой — это минимизация ошибок, вызванных тем фактом, что действительные числа, в общем случае, не могут быть точно представлены в фиксированном пространстве. По определению, ошибка с плавающей точкой не может быть устранена, и, в лучшем случае, ею можно только управлять.

Хуберто М. Сьерра в своем патенте 1956 года «Средства арифметического управления с плавающей десятичной точкой для калькулятора» отметил: [1]

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

Z1 , разработанный Конрадом Цузе в 1936 году, был первым компьютером с арифметикой с плавающей точкой и, таким образом, был подвержен ошибкам с плавающей точкой. Однако ранние компьютеры, время работы которых измерялось миллисекундами, были неспособны решать большие, сложные задачи [2] и, таким образом, редко страдали от ошибок с плавающей точкой. Однако сегодня, когда производительность суперкомпьютерных систем измеряется в петафлопсах , ошибки с плавающей точкой являются серьезной проблемой для решателей вычислительных задач.

В следующих разделах описываются сильные и слабые стороны различных средств уменьшения ошибок с плавающей точкой.

Численный анализ ошибок

Хотя это и не является основным направлением численного анализа , [3] [4] : 5  числовой анализ погрешностей существует для анализа и минимизации ошибок округления чисел с плавающей точкой.

арифметика Монте-Карло

Анализ ошибок с помощью арифметики Монте-Карло выполняется путем многократного внесения небольших ошибок в значения данных алгоритма и определения относительного влияния на результаты.

Расширение точности

Расширение точности — это использование более крупных представлений действительных значений, чем изначально рассматривалось. Стандарт IEEE 754 определяет точность как количество цифр, доступных для представления действительных чисел. Язык программирования может включать одинарную точность (32 бита), двойную точность (64 бита) и учетверенную точность (128 бит). Хотя расширение точности делает влияние ошибок менее вероятным или менее важным, истинная точность результатов все еще неизвестна.

Арифметика переменной длины

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

Использование погрешности операции с плавающей точкой

Алгоритм с плавающей точкой, известный как TwoSum [5] или 2Sum , созданный Кнутом и Мёллером, и его более простая, но ограниченная версия FastTwoSum или Fast2Sum (3 операции вместо 6) позволяют получить (точный) член ошибки сложения с плавающей точкой, округленный до ближайшего. Можно также получить (точный) член ошибки умножения с плавающей точкой, округленный до ближайшего, за 2 операции с помощью объединенного умножения-сложения (FMA) или за 17 операций, если FMA недоступен (с алгоритмом, созданным Деккером). Эти члены ошибки могут использоваться в алгоритмах для повышения точности конечного результата, например, с помощью расширений с плавающей точкой или компенсированных алгоритмов.

Операции, дающие результат сложения или умножения чисел с плавающей точкой, округленный до ближайшего целого с учетом его погрешности (но несколько отличающийся от алгоритмов, упомянутых выше), были стандартизированы и рекомендованы в стандарте IEEE 754-2019.

Выбор другого основания

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

Интервальная арифметика

Интервальная арифметика — это математический метод, используемый для ограничения ошибок округления и ошибок измерения в математических вычислениях . Значения — это интервалы, которые могут быть представлены различными способами, например: [6]

«Вместо использования одного числа с плавающей точкой в ​​качестве приближения для значения действительной переменной в исследуемой математической модели интервальная арифметика допускает ограниченную точность, связывая с переменной набор действительных чисел в качестве возможных значений. Для удобства хранения и вычислений эти наборы ограничены интервалами». [7]

Оценка интервального арифметического выражения может обеспечить большой диапазон значений [7] и может серьезно переоценить истинные границы погрешности. [8] : 8 

Унумы Густафсона

Unums («универсальные числа») — это расширение арифметики переменной длины, предложенное Джоном Густафсоном . [9] Unums имеют поля переменной длины для экспоненты и мантиссы , а информация об ошибке передается в одном бите, ubit, представляющем возможную ошибку в младшем значащем бите мантиссы ( ULP ). [9] : 4 

Эффективность унумов подвергается сомнению Уильямом Каханом . [8]

Ограниченная плавающая точка

Ограниченная плавающая точка — метод, предложенный и запатентованный Аланом Йоргенсеном. [10] Структура данных включает стандартную структуру данных IEEE 754 и интерпретацию, а также информацию об ошибке между истинным действительным значением, представленным и значением, сохраненным представлением с плавающей точкой. [11]

Ограниченную плавающую точку критиковали как производную от работы Густафсона по числам unum и интервальной арифметике. [10] [12]

Ссылки

  1. ^ "Средства арифметического управления с плавающей десятичной точкой для калькулятора: Патент США 3037701". FreePatentsOnline.com . 1962-06-05 . Получено 2022-01-21 .
  2. ^ "История развития компьютеров и поколения компьютеров". WikiEducator . Сентябрь 2014 г. Получено 17 февраля 2018 г.
  3. ^ Трефетен, Ллойд Н. (1992). «Определение численного анализа» (PDF) . SIAM . Получено 16.02.2018 .
  4. ^ Хайэм, Николас Джон (2002). Точность и устойчивость численных алгоритмов (2-е изд.). Общество промышленной и прикладной математики (SIAM). ISBN 978-0-89871-521-7.
  5. ^ Ричард Шевчук, Джонатан (октябрь 1997 г.). «Адаптивная точность арифметики с плавающей точкой и быстрые надежные геометрические предикаты» (PDF) . Дискретная и вычислительная геометрия . 18 (3): 305–363. doi :10.1007/PL00009321. S2CID  189937041 . Получено 14.11.2022 .
  6. ^ "Стандарт IEEE для интервальной арифметики". IEEE STD 1788-2015 : 1–97. 2015-06-30. doi :10.1109/IEEESTD.2015.7140721. ISBN 978-0-7381-9720-3.
  7. ^ ab Hickey, T.; Ju, Q.; van Emden, MH (сентябрь 2001 г.). «Интервальная арифметика: от принципов к реализации» (PDF) . Journal of the ACM . 48 (5): 1038–1068. CiteSeerX 10.1.1.43.8001 . doi :10.1145/502102.502106. S2CID  15105694 . Получено 16.02.2018 . 
  8. ^ ab Kahan, William (июль 2016 г.). «Критика книги Джона Л. Густафсона THE END of ERROR — Unum Computation и его радикального подхода к вычислениям с действительными числами» (PDF) . Получено 17.02.2018 .
  9. ^ ab Gustafson, John Leroy (2016-02-04) [2015-02-05]. Конец ошибок: Unum Computing. Chapman & Hall / CRC Computational Science . Том 24 (2-е исправленное издание, 1-е изд.). CRC Press . ISBN 978-1-4822-3986-7. Получено 2016-05-30 .[1] [2]
  10. ^ ab Trader, Tiffany (17.01.2018). «Изобретатель утверждает, что решил проблему ошибок с плавающей точкой». HPCwire . Получено 01.03.2022 .
  11. ^ Патент США 11023230B2, Йоргенсен, Алан А., «Устройство для вычисления и сохранения границы ошибки во время операций с плавающей точкой и методы его получения», выдан 01.06.2021 г. 
  12. ^ «Была ли решена десятилетняя проблема ошибок с плавающей точкой?». insideHPC . 2018-01-17 . Получено 2022-03-01 .