gpt4 book ai didi

c++ - 与非常大的操作数相乘

转载 作者:太空狗 更新时间:2023-10-29 20:55:39 26 4
gpt4 key购买 nike

我正在实现一个多精度模块,此时我卡在了乘法中。

为了执行我的算法,我需要使用 Haswell 微架构将两个 64 位无符号操作数相乘,并将结果存储在内存块中。我正在使用“g++”执行一个实现,另一个使用“icpc”执行效率更高。

int main(){

//Operands
size_t a = 10000000000000000000 //Fit in 8 bytes
b = 7;

//To store the result;
size_t dst[2];

//Multiplication here... (Note that the multiplication result don't fit in 64bits. So, I need to save the result in two memory positions)

dst[0] = //Store the less significative half..
dst[1] = //Store the more significative half..


//My function
print_To_Screen(dst);
}

我不知道如何访问结果的每一半以将它们存储在我想要的内存块中。我是否必须使用汇编指令进行乘法运算并使用它们来存储结果,还是存在一种简单的方法?

最佳答案

只需按照建议使用__int128,大多数编译器都支持它:

__uint128_t mul64x64( uint64_t a, uint64_t b ) {
return ((__uint128_t)a) * ((__uint128_t)a);
}

这将转化为 x64 架构上的单指令乘法。

关于c++ - 与非常大的操作数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35201998/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com