我有一个使用GCC的__uint128_t
的C程序,这很好,但现在我的需求已经超出了它。
对于196位或256位的快速算术,我的选择是什么?
我唯一需要的操作是加法(我不需要进位位,即,我将使用模2192或2256进行计算)。
速度很重要,因此如果可能的话,我不想转向通用的多精度。 (实际上,我的代码确实在某些地方使用了多精度,但这是在关键循环中,并且将运行数百亿次。到目前为止,多精度只需要运行数万次。)
也许这可以直接编码,或者我需要找到一些适当的库。
你有什么建议,哦伟大的Stack Overflow?
澄清: GMP对我的需求来说太慢了。虽然我实际上在我的代码中使用了多精度,但它不在内部循环中,并且运行次数不到105次。热循环运行次数更像是1012次。当我更改我的代码(增加大小参数),以便多精度部分运行更多次,而单精度部分运行更少时,我遇到了100倍的减速(主要是由于内存管理问题,我认为,而不是额外的µops)。我希望将其降至4倍或更低。