Можно ли сложить N чисел типа double наиболее точно?

Видео-версия нашей статьи на Хабре (
12:40 Результаты тестирования Дело в том, что абсолютно точно сложить N чисел типа double (binary64 в IEEE-754) с сохранением суммы в типе double не получится в силу самой специфики формата с плавающей запятой. Если мы возьмём арифметику с плавающей запятой с бесконечной точностью (или даже воспользуемся рациональными числами), то при достаточном объёме памяти получим абсолютно точную сумму S массива чисел X[N]. Но эту абсолютно точную сумму нужно будет всё равно округлить к ближайшему числу типа double. Назовём эту округлённую сумму S’. Поэтому переформулируем наш вопрос иначе: можно ли сложить числа X[N] так, чтобы получить наиболее точную сумму S’, не пользуясь длинной арифметикой, а оставаясь лишь в рамках операций сложения с double? Видео даёт ответ на этот вопрос. Список источников [1] Раздел 5.3 книги Jean-Michel Muller, “Handbook of floating-point arithmetic”, 2018. Благодарность, если это видео или статья вам помогли - любая сумма по сердцу (ссылка на мою личную страницу):

Смотрите также