C中x64的128位算术运算
在x86上实现bignums时,显然数字大小的最有效选择是32位。 但是,您需要算术最多两倍的数字大小(即32 + 32 = 33,32 * 32 = 64,64 / 32 = 32)。 幸运的是,x86不仅提供了这一function,而且还可以从便携式C(uint64_t)访问它。
类似地,在x64上,希望使用64位数字。 这将需要128位算术(即64 + 64 = 65,64 * 64 = 128,128 / 64 = 64)。 幸运的是,x64提供了这个function。 不幸的是,它无法通过便携式C接入,但显然有人可以进入组装。
所以我的问题是它是否可从非便携式C访问.X64上的任何C编译器是否提供对此的访问,如果是,那么语法是什么?
(注意,我不是在谈论128位向量,它们被严格地视为32或64位字的集合,它们之间没有进位传播,但是关于实际的128位整数运算。)
gcc将__uint128_t
和__int128_t
作为扩展名。
您可能想要检查GNU多精度算术库: