正如我们所知,GMP是最流行的处理大整数的工具。关于GMP,我有两个问题。1.如何在GMP库中进行内部计算?假设一个两个字节的整数,另一个三个字节的整数,在内部对这些原始位执行的操作是什么!??2. GMP的性能速度如何比其他通用库高!?
提前谢谢..对我来说,了解这些东西对我的项目非常重要
发布于 2010-01-24 12:18:14
本页面(http://gmplib.org/manual/Algorithms.html)描述了GMP用于其操作的算法。
此外,GMP库是开源的,因此您可以自行下载和查找。
发布于 2021-12-18 00:32:16
GMP使用本地整数运算来执行所有多精度算术运算。浮点算术太混乱而无法完全信任,这就是GNU MPFR依赖GMP进行多精度浮点运算的原因。原因是IEEE浮点标准754/854/等太麻烦了,从来没有完全实现过,而且实现方式在不同的平台上差别很大。
mpn_...函数,这是对自然数的低级操作。例如,mpz_...函数使用符号大小表示和处理符号,然后使用mpn_...函数进行大小运算。基本的GMP数字类型是在gmp.h中定义的mp_limb_t类型,所有GMP操作都在该类型上完成,根据平台的不同,可以是unsigned int、unsigned long int或unsigned long long int。在几乎所有的平台上,所提供的例子,2字节和3字节的整数,将适合unsigned int类型,因此GMP将在单个镜头上使用本机整数操作来执行大多数基本算术。当您计算的数字大于一个肢体时,GMP将分配多个肢体来执行多精度计算并适当地处理进位(例如,请参阅此book)。请参阅this GMP手册条目,以了解库如何在肢体上单独运行。mpn/目录包含基本算术运算的每个处理器的具体实现,为每个最常用的处理器高度优化的代码: x86,ARM,CRAYs,IA64,mips,powerpcs,sparcs等。每个基本操作都以最好的方式在机器码中实现,并且GMP提供的自动工具(Autoconf和Automake)将知道哪一个链接到您编译GMP的特定目标的高级函数。请注意,您还可以在编译前将GMP调优到您的机器上,以便它可以使用最佳算法来计算许多不同的整数大小(请参阅here).https://stackoverflow.com/questions/2125823
复制相似问题