Порядок величины двойной точности

Какой порядок разницы в величине следует ожидать для вычитания двух теоретически равных чисел двойной точности?

У меня есть два массива с двойной точностью. Ожидается, что они будут теоретически такими же. Они оба рассчитаны двумя совершенно разными методологиями, поэтому между ними существует численная разница. Я проверил их элемент по элементу, и моя максимальная разница выходит 6.5557799910909154E-008. Мой босс говорит, что для двойной точности это очень большая разница, но я думал, что если разница, если порядка E-008, то это хорошо.

Спасибо, Прадип

Ответ 1

Плавная точка с двойной точностью имеет следующий формат

  • Знак бит: 1 бит
  • Ширина экспоненты: 11 бит
  • Значимая точность: 53 бит (52 явно сохранены)

Это дает от 15 до 17 значащих десятичных цифр. Если десятичная строка, содержащая не более 15 значащих десятичных знаков, преобразуется в двойную точность IEEE 754, а затем преобразуется обратно к тому же количеству значащих десятичных знаков, то окончательная строка должна соответствовать оригиналу; и если двойная точность IEEE 754 преобразуется в десятичную строку с по меньшей мере 17 значащими десятичными знаками и затем преобразуется обратно в двойную, то окончательное число должно соответствовать оригиналу.

Одинарная точность с плавающей запятой имеет следующий формат

  • Знак бит: 1 бит
  • Ширина экспоненты: 8 бит
  • Значение и точность: 24 (23 явно сохранены)

Это дает от 6 до 9 значащих десятичных цифр (если десятичная строка с не более чем 6 значащими десятичными значениями преобразуется в одиночную точность IEEE 754, а затем преобразуется обратно к тому же числу значащих десятичных знаков, то окончательная строка должна соответствовать оригинал, и если одиночная точность IEEE 754 преобразуется в десятичную строку с не менее чем 9 значащими десятичными знаками, а затем преобразуется обратно в одиночный, то окончательное число должно соответствовать оригиналу.

Максимальная разница, с которой вы сталкиваетесь, указывает на потерю точности, близкую к преобразованию в единую точность.

Знаете ли вы, какой из двух методов более точен? Является ли это компромиссом между скоростью вычислений и точностью, которая является основным отличием или является одним из алгоритмов, которые менее численно устойчивы? Какова точность входных данных? Разница в 8 десятичных цифр точности может быть неактуальной, если ваши входы не так точны... или это может означать отсутствие Марса на планетарной траектории.