7.4 Точность представления вещественных чисел в формате IEEE754.

3. сложение с числом меньшим в 223 раза (ошибка сдвига= — 0.007812). Во-первых, работать с числами можно только в узком диапазоне числовой оси, где мантиссы пересекаются. Автоматическая система управления учитывает таблетки поступившие в бункер от формовочной машины и взятые из бункера фасовочной машиной. Переводим дробную часть в двоичную сс. путем последовательного умножения и нахождения первых 8 знаков…

К сожалению, организация IEEE превратилась из международной общественной инженерной организации (которой она была изначально) в торговую организацию. Поэтому если вы захотите ознакомиться, с оригиналом стандарта, вам придется купить его примерно за 80$. Но, Российского законодательство разрешает мне в учебных целях комментировать данный стандарт. Чтобы представить число в формате single-precision IEEE 754 необходимо привести его к двоичному нормализованному виду. В §3 мы проделали это преобразование над числом 155,625.

Отсюда видно, что невозможно представить число нуль или бесконечность в заданном формате. Числа, которые больше границ диапазона представления чисел считаются бесконечными. Не числа NAN(No a Numbers). Денормализованные числа. Это числа, мантиссы которых лежат в диапазоне 0.1 Денормализованные числа находятся ближе к нулю, чем нормализованные.

Абсолютная максимальная ошибка для числа в формате IEEE754 равна в пределе половине шага чисел. Шаг чисел удваивается с увеличением экспоненты двоичного числа на единицу. Как происходит округление показано на примерах в таблице 3. При преобразовании чисел необходимо выбрать один из способов округления. Стандарт IEEE 754 широко применяется в технике и программировании. Большинство современных микропроцессоров изготовляются с аппаратной реализацией представления вещественных переменных в формате IEEE754.

7.4 Точность представления вещественных чисел в формате IEEE754.

Данная ошибка всегда присутствую в компьютерных вычислениях. На самом деле ошибки точности представления числа наиболее безобидные в компьютерных вычислениях, и обычно многие программисты на них не обращают никакого внимания. Поэтому переменные и промежуточные результаты компьютерных вычислений должны быть приведены к одному типу данных. Например, требование приведения данных к одному типу изложено в стандарте на язык Си ISO/IEC 9899:1999.

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

§3. Основные понятия в представлении чисел с плавающей точкой.

Максимальная относительная погрешность результата операции равна примерно 5,96e-6%, что не превышает относительную погрешность представления числа (см.п.9.1). Хотя с относительной погрешностью здесь всё в порядке, здесь есть другие проблемы. Во-вторых, для каждого исходного числа существует предел выполнения цикла называемый «Циклической дырой». Как вы понимаете, такая система работает в бесконечном цикле. Допустим в один из дней фасовочная машина простояла слишком долго и бункер заполнился до 300 кг. Что произойдет после её включения?

Потому, что мантиссы чисел 300 и 0,00001 не пересекаются для формата single. Программа будет показывать вес в бункере 500кг. Прибегут специалисты, проверят датчики, провода, компьютер и скажут что программа зависла. Этот пример вымышлен специально, и так считать нельзя, хотя с точки зрения математика здесь всё безупречно. Эта ошибка свойственна математикам и начинающим программистам. Я бы сказал, что основная работа программиста заключается в борьбе с погрешностями, а не в математических решениях поставленной задачи.

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

Здесь результат операции сложения двух чисел абсолютно точен, но результат был округлен микропроцессором. Для переменных типа Single в окне Windows отображается 7 значащих цифр округлённых до ближайшего целого. Но, мы можем схитрить и вставить в программу x=0.123456789012346 +1E-16. Полученная переменная будет равна 3FBF9ADD3746F67D (это используется в примере с грязным нулём) Отобразить или вести через окно ПК такое число невозможно.

1. У вас нет технической возможности отображать или вводить точные значения переменных в окнах, что само по себе очень печально. Очень часто эта ошибка возникает в интерфейсе «оператор-машина». Например, при обнулении тары в весовых программах. В результате переменную, которую оператор считает нулем — нулю не равна Относительная погрешность результата равна бесконечности.

Так как PHP препроцессор используют большинство серверов, то у любого пользователя сети в течение 10 дней была возможность «вырубить» любой сервер. Как пишут разработчики, что этот баг работает только в 32-х разрядных системах, но если повысить точность граничного числа, то я думаю, что и 64-х разрядные системы тоже повиснут (не проверено!). Из сказанного выше видно, что мнение о том, что при вычислениях с плавающей точкой результат не выходит за пределы относительной погрешности представления наибольшего числа является ложным.

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

Задание: Дано некоторое число с плавающей точкой в десятичной системе счисления. Вы можете воспользоваться программой IEEE754 v.1.0 &nbsp для изучения и оценки погрешностей при работе с вещественными числами представленными в формате IEEE754.

Что еще посмотреть: