В следующем, математике показано на code format
вычисляется с IEEE 754 в округло до ближайшего режима, а математика не в формате кода является точной.
Позвольте p быть числом бит в значении.
Пусть е быть множитель 2 н -1 для положительного целого числа п и точно представима (п ≤ р).
U (x) ULP x. Для нормальных значений U (x) ≤ 2 1- px.
t be f*x
. Если f*x
является субнормальным, то это точно fx. Если это нормально, то t = fx + e для некоторых | e | ≤ ½ U (FX) ≤ 2 - рх. Заметим, что если | e | составляет ровно половину ULP, тогда он должен равняться младшему биту x, который установлен (поскольку в противном случае e имел бы более одного бита и не мог быть половиной ULP).
Подставляя е, т = (2 п -1) х + е.
т + х = (2 п -1) х + е + х = 2 пх + е.
Рассмотрите t+x
. По требованиям IEEE-754 с круглыми к ближайшему, то это должно быть в пределах ½ ULP из т + х, которую мы знаем, чтобы быть 2 пх + е. Ясно 2 nx является представительным (запрет переполнения) и | e | ≤ ½ U (FX) ≤ ½ U (2 пх). Поэтому t+x
должно быть 2 nx за исключением случаев, когда | e | ровно пол УЛП и низкий бит х «ы мантиссы нечетно (так как даже младший бит выигрывает связь и дает 2 пх).
Если п является 1, то е является 1, а е 0. Если 2 ≤ п, то | e | ≤ 1/4 U (2 пх) < ½ U (2 пх). Итак, случай, когда | e | составляет половину ULP, а x бит с низким разрядом не происходит.
Поэтому t+x
должно быть 2 пх. (Переполнение и NaN оставлены как упражнение для читателя.)
Кроме того, я полностью тестировал 32-битную двоичную с плавающей точкой IEEE-754.
Спекуляция: она работает для случаев, когда x имеет наименьшее число (+ и -) до 0? – Rob
У меня есть сомнения относительно точности вычислений, для фракций, которые используют все биты. Имейте в виду, что 4 * x оставит дроби без изменений, но 3 * x может потерять младший бит. –
@ Rob: это тривиально работает для этих случаев, потому что каждая задействуемая операция является точной.Это более интересно для чисел с плавающей запятой «полная ширина», где некоторые из промежуточных шагов совершают округление, но конечный результат в любом случае является точным. –