powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / 128 бита, делить или умножать?
19 сообщений из 19, страница 1 из 1
128 бита, делить или умножать?
    #39288526
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
народ, подскажите, никто не видел хорошую кроссплатформенную библиотеку, которая может:

умножить два знаковых 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
128 бита, делить или умножать?
    #39288540
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 получаются беззнаковые.
...
Рейтинг: 0 / 0
128 бита, делить или умножать?
    #39288541
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavagcc, clang - там уже встроенное
Ну и пользуйся gcc всюду.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
128 бита, делить или умножать?
    #39288544
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovnojavagcc, clang - там уже встроенное
Ну и пользуйся gcc всюду.


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

под Solaris clang фактически нет, да и gcc имеет несовмстимый ABI.
...
Рейтинг: 0 / 0
128 бита, делить или умножать?
    #39288546
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
128 бита, делить или умножать?
    #39288549
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojavaони есть не везде. к примеру их чуть менее, чем вообще нет под Windows x64.

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

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

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

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


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

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

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

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

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

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

Выбирай http://www.boost.org/doc/libs/1_58_0/libs/multiprecision/doc/html/boost_multiprecision/perf/int_real_world.html
Для начала прогони профайлером свой тест, возможно, тебя устроит быстродействие. Если нет, пиши специализации и затачивай поведение под платформу.
...
Рейтинг: 0 / 0
128 бита, делить или умножать?
    #39289605
nojava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Анатолий Широков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
128 бита, делить или умножать?
    #39289614
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Цена вопроса - поддержать __int128 и пнуть компиллятор чтоб знал SSE .
...
Рейтинг: 0 / 0
128 бита, делить или умножать?
    #39289619
Фотография Анатолий Широков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nojava,

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


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