Быстрое умножение и деление на степень двойки

Уравновешенная троичная система счисления - форум переехал с http://ternary.info

Moderator: haqreu

Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Быстрое умножение и деление на степень двойки

Post by Mac Buster »

Давайте думать о быстрых алгоритмах умножения и деления уравновешенного троичного числа на степень двойки. Мне стало известно, что такой алгоритм уже разработан в штатах и это меня как-то настораживает :D

Если про умножение есть кое-какие идеи, то вот оносительно деления ничего в голову не приходит.
Extreme Entertainment
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Неужели ни кто ничего не может предложить ? :-?
Extreme Entertainment
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Mac Buster wrote:Неужели ни кто ничего не может предложить ? :-?
Обозначим троичные сдвиги так:
>>> троичный сдвиг вправо (равносильно делению на 3)
<<< троичный сдвиг влево (равносильно умножению на 3)

Тогда можно записать:
2*T = 3*T-T = (T<<<1)-T
4*T = 3*T+T = (T<<<1)+T
10*T = 9*T+T = (T<<<2)+T

А вот с делением такие фокусы уже не пройдут :(
Я тут за главного - если что шлите мыло на me собака shaos точка net
Mac Buster
Retired
Posts: 1474
Joined: 03 Aug 2003 22:37
Location: Moscow

Post by Mac Buster »

Shaos wrote:Тогда можно записать:
2*T = 3*T-T = (T<<<1)-T
4*T = 3*T+T = (T<<<1)+T
10*T = 9*T+T = (T<<<2)+T
Да, примерно об этом я писал выше.
А вот с делением такие фокусы уже не пройдут :(
Универсального решения я пока не нашёл, а выделение частных случаев занимает слишком много времени :-?
Extreme Entertainment
Alexandr
Novelist
Posts: 34
Joined: 20 Oct 2005 18:46

Post by Alexandr »

Shaos wrote:А вот с делением такие фокусы уже не пройдут :(
Деление немного можно ускорить если, выполнять сдвиг делимого и делителя на количество нулевых младших разрядов делителя, а потом выполнять деление полученного делимого на полученный делитель
User avatar
Shaos
Admin
Posts: 24008
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Быстрое умножение и деление на степень двойки

Post by Shaos »

Автор Тунгуски в 2009 году предложил делить на 2 путём умножения на число .PPPPPP... (что есть 0.5):

Code: Select all

A B C D / 2
-----------
  A B C . D 
    A B . C D
 +    A . B C D
-----------------
[0, A, A+B, A+B+C].[B + C + D, C+D, D]
Я тут за главного - если что шлите мыло на me собака shaos точка net