Если про умножение есть кое-какие идеи, то вот оносительно деления ничего в голову не приходит.
Быстрое умножение и деление на степень двойки
Moderator: haqreu
-
Mac Buster
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Быстрое умножение и деление на степень двойки
Давайте думать о быстрых алгоритмах умножения и деления уравновешенного троичного числа на степень двойки. Мне стало известно, что такой алгоритм уже разработан в штатах и это меня как-то настораживает 
Если про умножение есть кое-какие идеи, то вот оносительно деления ничего в голову не приходит.
Если про умножение есть кое-какие идеи, то вот оносительно деления ничего в голову не приходит.
Extreme Entertainment
-
Mac Buster
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
-
Shaos
- Admin
- Posts: 24404
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Обозначим троичные сдвиги так: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
А вот с делением такие фокусы уже не пройдут
-
Mac Buster
- Retired
- Posts: 1474
- Joined: 03 Aug 2003 22:37
- Location: Moscow
Да, примерно об этом я писал выше.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
-
Shaos
- Admin
- Posts: 24404
- Joined: 08 Jan 2003 23:22
- Location: Silicon Valley
Re: Быстрое умножение и деление на степень двойки
Автор Тунгуски в 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]
