Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

HM Sierra отмечал в своем патенте 1956 г. «Средства управления арифметикой с плавающей запятой для калькулятора»:

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

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

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

Численный анализ ошибок [ править ]

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

Арифметика Монте-Карло [ править ]

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

Повышение точности [ править ]

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

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

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

Использование условия ошибки операции с плавающей запятой [ править ]

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

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

Выбор другой системы счисления [ править ]

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

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

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

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

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

Унумы Густафсона [ править ]

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

Уильям Кахан ставит под сомнение эффективность unums . [6]

Ссылки [ править ]

  1. ^ "История развития компьютеров и поколения компьютеров" . WikiEducator . Сентябрь 2014 . Проверено 17 февраля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  2. ^ Trefethen, Ллойд Н. (1992). «Определение численного анализа» (PDF) . СИАМ . Проверено 16 февраля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  3. ^ a b Хайэм, Николас Джон (2002). Точность и устойчивость численных алгоритмов (2-е изд.). Общество промышленной и прикладной математики (SIAM). ISBN 978-0-89871-521-7.
  4. ^ https://people.eecs.berkeley.edu/~jrs/papers/robustr.pdf
  5. ^ a b Hickey, T .; Ju, Q .; ван Эмден, MH (сентябрь 2001 г.). «Интервальная арифметика: от принципов к реализации» (PDF) . Журнал ACM . 48 (5): 1038–1068. CiteSeerX 10.1.1.43.8001 . DOI : 10.1145 / 502102.502106 . Проверено 16 февраля 2018 .  
  6. ^ a b Кахан, Уильям (июль 2016 г.). «Критика книги Джона Л. Густафсона« КОНЕЦ ОШИБКИ - Unum Computing »и его радикальный подход к вычислениям с действительными числами» (PDF) . Проверено 17 февраля 2018 . CS1 maint: обескураженный параметр ( ссылка )
  7. ^ a b Густафсон, Джон Лерой (04.02.2016) [05.02.2015]. Конец ошибки: Unum Computing . Чепмен и Холл / CRC Computational Science . 24 (2-е исправленное издание, 1-е изд.). CRC Press . ISBN 978-1-4822-3986-7. Проверено 30 мая 2016 . [1] [2]