相关疑难解决方法(0)

长整数例程可以从SSE中受益吗?

我还在研究C++中任意长整数的例程.到目前为止,我已经为64位Intel CPU实现了加/减和乘法.

一切正常,但我想知道我是否可以通过使用SSE来加快速度.我浏览了SSE文档和处理器指令列表,但我找不到任何我认为可以使用的内容,原因如下:

  • SSE有一些整数指令,但大多数指令处理浮点.看起来它不是设计用于整数(例如,是否有较小的整数比较?)

  • SSE的想法是SIMD(相同的指令,多个数据),因此它提供了2或4个独立操作的指令.另一方面,我希望有一个像128位整数加(128位输入和输出)的东西.这似乎不存在.(但是?在AVX2中可能?)

  • 整数加法和减法既不处理输入也不处理输出.因此,手动操作非常麻烦(因而也很慢).

我的问题是:我的评估是正确的还是有什么我忽略的?长整数例程可以从SSE中受益吗?特别是,它们可以帮助我编写更快的添加,子或mul例程吗?

performance integer sse bignum arbitrary-precision

19
推荐指数
1
解决办法
3773
查看次数

为什么要使用更高的基数来实现BigInt?

我正在尝试实现BigInt并阅读了一些关于它的线程和文章,其中大多数建议使用更高的基数(256或2 ^ 32甚至2 ^ 64).

为什么更高的基数有利于此目的?

我有的其他问题是我应该如何将字符串转换为更高的基数(> 16).我读过没有标准的方法,除了base64.最后一个问题,我如何使用这些更高的基础.一些例子会很棒.

c c++ biginteger

2
推荐指数
1
解决办法
907
查看次数

如何在内存中表示极大的浮点数?

像 GMP 这样的任意精度库如何存储内存中表示的极大浮点数?

我会想象,例如,如果您想计算 Pi 或欧拉常数,例如 2,000,000 位数字,您将为小数点右侧的数字分配大量字节。每个字节将存储 2 个小数位值,并且该数组将是一个数据结构的成员,具有用于存储该值的位数和字节数。

这是它的工作原理吗?

c largenumber gmp bigint

1
推荐指数
1
解决办法
181
查看次数