Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / 128 бита, делить или умножать? / 19 сообщений из 19, страница 1 из 1
08.08.2016, 18:38
    #39288526
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
народ, подскажите, никто не видел хорошую кроссплатформенную библиотеку, которая может:

умножить два знаковых 64 битных целых в 128 битное знаковое
разделить 128 битное знаковое целое на знаковое 64 битное

gcc, clang - там уже встроенное

под msvc, clang/c2, sunpro такого счастья нет (особенно sunpro, в т.ч. bigendian sparc).

под msvc чтоб умела интринзики https://msdn.microsoft.com/en-US/library/82cxdw50(v=vs.80).aspx
...
Рейтинг: 0 / 0
08.08.2016, 19:04
    #39288540
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Умножение для положительных (или беззнаковых) можно сделать через разбиение по 32 и сдвигами, т.е.
Код: plaintext
1.
(a1*k + a0)*(b1*k + b0) = a1*b1*k^2 + (a1*b0 + a0*b1)*k + a0*b0


Где k = 2^32,
a1, b1 старшие 32 бита
a0, b0 младшие 32 бита
Для отрицательных проблема, т.к. a0, b0 получаются беззнаковые.
...
Рейтинг: 0 / 0
08.08.2016, 19:05
    #39288541
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
nojavagcc, clang - там уже встроенное
Ну и пользуйся gcc всюду.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.08.2016, 19:09
    #39288544
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Dimitry Sibiryakovnojavagcc, clang - там уже встроенное
Ну и пользуйся gcc всюду.


они есть не везде. к примеру их чуть менее, чем вообще нет под Windows x64.
вернее clang есть, но в принципе не умеет __int128_t

под Solaris clang фактически нет, да и gcc имеет несовмстимый ABI.
...
Рейтинг: 0 / 0
08.08.2016, 19:23
    #39288546
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Dima TУмножение для положительных (или беззнаковых) можно сделать через разбиение по 32 и сдвигами, т.е.
Код: plaintext
1.
(a1*k + a0)*(b1*k + b0) = a1*b1*k^2 + (a1*b0 + a0*b1)*k + a0*b0


Где k = 2^32,
a1, b1 старшие 32 бита
a0, b0 младшие 32 бита
Для отрицательных проблема, т.к. a0, b0 получаются беззнаковые.

все эти алгоритмы из hacker известны, но не хочется на коленке изобретать и тестировать велосипед.
кроме того, это не актуально для 64-х бит (вернее актуально, но уже есть новые инструкции).
...
Рейтинг: 0 / 0
08.08.2016, 19:31
    #39288549
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
nojavaони есть не везде. к примеру их чуть менее, чем вообще нет под Windows x64.

Вах! Я, стало быть, свою продукцию собираю тем чего не может быть...

Открой для себя http://tdm-gcc.tdragon.net/
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.08.2016, 19:32
    #39288551
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
nojavaвсе эти алгоритмы из hacker известны, но не хочется на коленке изобретать и тестировать велосипед.
Не знаю что такое hacker, я тебе написал расчет выведенный из арифметики и булевой алгебры. Все точно и гарантировано. Не хочешь, не пользуйся, но обсирать не надо.
...
Рейтинг: 0 / 0
08.08.2016, 19:35
    #39288554
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Dima TВсе точно и гарантировано
и неторопливо
...
Рейтинг: 0 / 0
08.08.2016, 19:44
    #39288555
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Dimitry Sibiryakovnojavaони есть не везде. к примеру их чуть менее, чем вообще нет под Windows x64.

Вах! Я, стало быть, свою продукцию собираю тем чего не может быть...

Открой для себя http://tdm-gcc.tdragon.net/


твой пример попадает под вон "чуть" выше. это все неинтересно - должен быть msvc и его ide как целевая платформа, суррогаты не интересны
...
Рейтинг: 0 / 0
08.08.2016, 19:45
    #39288556
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Dima Tnojavaвсе эти алгоритмы из hacker известны, но не хочется на коленке изобретать и тестировать велосипед.
Не знаю что такое hacker, я тебе написал расчет выведенный из арифметики и булевой алгебры. Все точно и гарантировано. Не хочешь, не пользуйся, но обсирать не надо.

hackers delight, который ссылается на Кнута
...
Рейтинг: 0 / 0
09.08.2016, 03:23
    #39288638
SashaMercury
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
ИзопропилDima TВсе точно и гарантировано
и неторопливо

Насколько неторопливей чем то, что предлагаете вы?)
...
Рейтинг: 0 / 0
09.08.2016, 09:24
    #39288698
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
SashaMercuryИзопропилпропущено...

и неторопливо

Насколько неторопливей чем то, что предлагаете вы?)

несколько порядков, от 10 до 1000 раз неторопливее.
...
Рейтинг: 0 / 0
09.08.2016, 12:25
    #39288829
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
SashaMercuryНасколько неторопливей чем то, что предлагаете вы?)
Тонко )))
...
Рейтинг: 0 / 0
10.08.2016, 12:03
    #39289549
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
nojava,

Выбирай http://www.boost.org/doc/libs/1_58_0/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
Для начала прогони профайлером свой тест, возможно, тебя устроит быстродействие. Если нет, пиши специализации и затачивай поведение под платформу.
...
Рейтинг: 0 / 0
10.08.2016, 12:49
    #39289605
nojava
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Анатолий Широковnojava,

Выбирай http://www.boost.org/doc/libs/1_58_0/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
Для начала прогони профайлером свой тест, возможно, тебя устроит быстродействие. Если нет, пиши специализации и затачивай поведение под платформу.

Модератор: Отредактрировано

а так предложение загнать себе в dependency 568 мегабайт исходников, да еще и сменть ориентацию язык с C на C++, просто чтоб получить 128-м битные умножения и деления - это отличное предложение :) :)

на самом деле решение найдено вот тут http://stackoverflow.com/questions/6759592/how-to-enable-int12n-visual-studio
найдено и generic решение, без привязки к процессору, но не под BSD, а под GPL, неспешно ищется альтернатива.
...
Рейтинг: 0 / 0
10.08.2016, 12:58
    #39289614
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Цена вопроса - поддержать __int128 и пнуть компиллятор чтоб знал SSE .
...
Рейтинг: 0 / 0
10.08.2016, 13:01
    #39289619
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
nojava,

Тогда прочитай обратно мое сообщение и не принимай близко к сердцу повелительное наклонение. Блин, я опять использовал повелительное. Что же делать? Как с тобой общаться? Может вопросительными предложениями?
...
Рейтинг: 0 / 0
10.08.2016, 13:04
    #39289625
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Девочки не ссорьтесь. Нормальный-же диалог. Дают советы. Можно отклонить если чо.
...
Рейтинг: 0 / 0
10.08.2016, 13:05
    #39289626
Анатолий Широков
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
128 бита, делить или умножать?
Модератор: Не провоцируй
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / 128 бита, делить или умножать? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]