Изменения

Перейти к: навигация, поиск

Adaptive precision arithmetic

12 байт убрано, 20:52, 21 октября 2011
Нет описания правки
Ноль не пересекается ни с одним другим числом.
'''Например''', числа <tex>1100</tex> и <tex>-10.1</tex> не пересекаются, а <tex>110</tex> и <tex>10</tex> {{---}} пересекаются.
{{Определение
}}
'''Например''', числа <tex>1100</tex> и <tex>11</tex> {{---}} смежные, а <tex>1100</tex> и <tex>1000</tex> {{---}} нет.
Иногда для использовании точной арифметики может понадобиться больше, чем <tex>p</tex> бит для хранения величин. В связи с этим вводится одно из базовых форм хранения чисел для такой арифметики.
}}
'''Например''', в 4-битной арифметике произведение <tex>111 \times 101 = 100011</tex> будет округлено в <tex>1.001 \times 2^5</tex>.
При вычислении результата может возникнуть ситуация, когда значение попадает в точности между двумя соседними <tex>p</tex>-битными значениями. Тогда требуется определить правило поведения в таком случае. Рассмотрим некоторые из них.
}}
'''Например''', в 4-битной арифметике число <tex>10011</tex> будет округлено до <tex>1.010 \times 2^4</tex> по первому правилу, и до <tex>1.001 \times 2^4</tex> по второму.
Стоит отметить, что стандарт IEEE 754 использует округление до ближайшего четного по умолчанию.
'''ULP''' (англ. ''units in the last place'') {{---}} эффективная величина самого младшего (<tex>p</tex>-ого) бита.
}}
'''Например''', <tex>ulp(-1100) = 1, ulp(1) = 0.001</tex> в <tex>p</tex>-битной арифметике.
Так же полезной нотацией является <tex> err(a \circledast b) </tex>, которая обозначает ошибку округлении результата выполнения операции <tex>\circledast</tex>. Отметим, что если <tex>ulp</tex> всегда беззнаковая величина, то <tex>err</tex> может иметь знак. Для базовых операций (сложение, вычитание, умножение) <tex> a \circledast b = a \ast b + err(a \circledast b)</tex>, и точное округление гарантирует, что <tex> |err(a \circledast b)| \leqslant \frac{1}{2}ulp(a \circledast b)</tex>.
Разложение называется '''строго неперекрывающимся''', если если его компоненты попарно неперекрываются, ни одна компонента не смежна никаким двум другим, а также любая пара смежных компонент состоит из степеней двойки.
}}
'''Например''', $11000 + 11$ и $10000 + 1000 + 10 + 1$ {{---}} строго неперекрывающиеся разложения, а $11100 + 11$ и $100 + 10 + 1$ {{---}} нет.
Для разложения эта характеристика означает, что ноль в записи разложения должен появляться ''как минимум'' каждые $p + 1$ бит. Например, разложение, каждая компонента которого есть $p$-битное число, и максимальная величина которой равна $1111$, может быть не больше $1111.01111011110\dots$.
Анонимный участник

Навигация