2013-03-19 4 views
2

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

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

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

ответ

2

Double precision floating point имеет следующий формат

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

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

Single precision floating point имеет следующий формат

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

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

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

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

Смежные вопросы