У меня есть программа на C, которая использует GCC __uint128_t
, и это здорово, но теперь мои потребности превысили ее.
Какие у меня варианты для быстрой арифметики с 196 или 256 битами?
Единственное, что мне нужно, это сложение (и мне не нужен бит переноса, то есть я буду работать с модом 2 192 или 2 256).
Скорость важна, поэтому я не хочу переходить на общую точность, если это вообще возможно. (На самом деле мой код в некоторых местах использует многоточность, но это находится в критическом цикле и будет выполняться десятки миллиардов раз. Пока что многоточность должна выполняться только десятки тысяч раз.)
Возможно, это достаточно просто для непосредственного кодирования, или мне нужно найти подходящую библиотеку.
Какой твой совет, о великий Кару?
Пояснение: GMP слишком медленный для моих нужд. Хотя я на самом деле использую в своем коде многоточность, она не во внутреннем цикле и выполняется менее 10 раз 5. Горячая петля работает более 10 раз 12. Когда я изменил свой код (увеличив параметр размера) так, чтобы часть с множественной точностью выполнялась чаще, чем с одинарной точностью, у меня было 100-кратное замедление (я думаю, что в основном из-за проблем с управлением памятью, а не из-за лишних мопов)). Я хотел бы снизить это до 4-х кратного замедления или лучше.