Изменения

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

Adaptive precision arithmetic

25 байт добавлено, 20:07, 21 октября 2011
Суммирование расширений
===Суммирование расширений===
<wikitex>Базируясь на алгоритмах сложения двух <tex>p</tex>-битных чисел, описанных выше, можно предложить алгоритмы суммирования расширений. В этой статье их будет предложено два: $\mathrm {ExpansionSum }$ и $\mathrm {FastExpansionSum}$. Первый алгоритм прибавляет к m-элементному расширению n-элементное расширение за время <tex>O(mn)</tex>, в то время, как последний алгоритм делает это за <tex>O(n + m)</tex>.
Несмотря на такое различие в асимптотике, первый алгоритм на практике может оказаться быстрее на расширениях, чей размер мал и фиксирован, потому что программные циклы могут быть полностью развернуты, а косвенные расходы времени исчезают, так как можно отказаться от использования массива). Линейный же алгоритм имеет определенные условия, при которых подобные оптимизации невозможны.
FastExpansionSum имеет несколько серьезных недостатков.Первый из них - алгоритм не сохраняет свойств неперекрываемости/несмежности. Второй - алгоритм основывается на округлении до ближайшего четного, что делает его непереносимым.
<wikitex>
Как правило, общим недостатком алгоритмов работы с расширениями является то, что в расширении на выходе могут быть нулевые элементы, даже если в исходном расширении их не было. Например, если подать на вход расширениея $1111 + 0.0101$ и $1100 + 0.11$, то результатом будет $11100 + 0 + 0 + 0.0001$. К счастью, алгоритмы, описанные в этой статье хорошо справляются с этой проблемой.
</wikitex>
Анонимный участник

Навигация