- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试将任意大的数字提高到任意大的幂。据我所知,GMP 有一个函数可以执行此操作,但对结果应用模,还有一个函数可以让我将任意数字提高到 unsigned int
指数。有解决办法吗?
最佳答案
and a function that lets me raise an arbitrary number to an
unsigned int
exponent
它是一个 unsigned long int
指数,所以如果你在一个 unsigned long
是 64 位(或更多)的系统上,这将使你超出可用内存 future 几年(2^(2^64-1)
需要几个 EB 存储空间)。
如果您使用的是 32 位 unsigned long
系统,您可以将指数分成两部分,
if (exponent >= (1u << 31)) {
mpz_pow_ui(base, base, exponent >> 31);
mpz_pow_ui(base, base, 1u << 31);
}
mpz_pow_ui(base, base, exponent & ((1u << 31) - 1));
这很有可能需要比您拥有的更多的内存。
另一个问题是 GMP 使用 int
来计算肢体数量,因此通常您不能使用超过 (2^31 - 1)*BITS_PER_LIMB
位(BITS_PER_LIMB
通常是 32 位或 64 位,具体取决于平台)。
如果您认为您需要 a^b
,其中 a > 1
和 b
不适合 unsigned long ( long)
,无论如何你都会遇到 GMP 和你的内存问题。
关于c++ - GMP-无模功率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345126/
任意精度库 GMP 和 MPFR 使用机器字大小整数的堆分配数组来存储构成高精度数字/尾数的肢体。 应该如何解释这个肢体数组以恢复任意精度整数?换句话说:对于 N 个肢体,每个肢体持有 B 位,我应该
任意精度库 GMP 和 MPFR 使用机器字大小整数的堆分配数组来存储构成高精度数字/尾数的肢体。 应该如何解释这个肢体数组以恢复任意精度整数?换句话说:对于 N 个肢体,每个肢体持有 B 位,我应该
我想安装 R 的 Rmpfr 库,所以我在 R 中输入: install.packages("Rmpfr") 这个包需要安装GMP C库,在Ubuntu中可以在终端输入安装 sudo apt-get
我刚开始使用 GMP,因为我需要检查任何一个功能。 我下载了 gmp-6.0.tar,将其解压,然后在我的代码中使用了 gmp_printf。 现在,当我打开 gmp_printf.c 时,它有一个头
我正在尝试让 GMP 与 Xcode 一起工作。到目前为止,我已经解压缩了主目录中的文件,运行了所有必要的命令来配置、制作和安装 ./configure --prefix=/usr/local --e
GMP库中是否实现了任何对数函数? 最佳答案 没有,GMP中没有这样的功能。 仅在MPFR中。 关于gmp - 有GMP对数函数吗?,我们在Stack Overflow上找到一个类似的问题: http
如何知道 GMP 中声明变量的大小?或者我们如何确定 GMP 中整数的大小? mpz_random(temp,1); 在手册中,该函数将 1limb(=32bits for my comp) 大小分配
我想生成一个 n 字节的随机整数 z,这样 2^(n-1) <= z <= 2^n - 1 每当我运行以下代码时,gmp 会输出完全相同的整数,我做错了什么? // Random int of n b
考虑以下代码 // BOGP.cpp : Defines the entry point for the console application. // #include "stdafx.h" #in
我正在开发一个程序,用于在 C++ 中分解非常大的数字(20 位或更多),并且正在使用 GMP 来处理溢出问题。我的程序对于大约 10 位或更少的数字运行良好,但是当我向它抛出一个 15 位数字时,它
根据 GMP 手册,“整数运算函数假设所有整数对象都已初始化。您可以通过调用函数 mpz_init 来完成此操作。” 例如, int main(){ mpz_t n1, n2, result;
我对模块编码很陌生,我需要在模块中运行一些使用 GMP 库的计算。 所以第一个问题:通常可以在内核中运行 GMP 吗?为了测试,我编写了这个模块: #include #include #inclu
是否可以在独立环境中使用 GMP? 我正在开发一个必须在裸机上运行的程序(为了减少开销并出于安全目的 - 不允许使用外部代码),这迫使我创建一个简约的内核,但是,我还需要使用 GMP任意大的整数。我研
我需要计算三个二维数组。当我尝试使用 GMP 库初始化数组时。我收到以下错误: GNU MP: Cannot allocate memory (size=16) Aborted (core dumpe
这是为数学极客准备的;) 我正在编写一个小型 C 程序,使用 GNU MP 库来计算前 10 个斐波那契数。这是我的尝试: #include "gmp.h" #include #include #
我正在尝试获取 gmp 上的机器精度变量。 为此,我改编了 wikipedia 中的代码,以固定精度计算 gmp 的精度: int main( int argc, char **argv ) {
目前我正在查看 GMP 库的文档,我在理解函数规范中列出的变量的命名约定时遇到了一些困难。 特别是 rop 和 op 的使用让我感到困惑。 这是列出导入和导出函数的页面,由于我对命名约定的混淆,我很难
我正在尝试编写这样的代码 .... mpz_class *x = NULL; mpz_class *lValue = NULL; .... for(int k = 0; k 分配你的数组。尽管您已经为
我正在使用 GMP 包来实现两个函数的乘积,我表示为两个收敛级数的柯西乘积。 更详细地说:我正在寻找一种方法来计算 f(x)=g(x)*h(x)其中 g(x)是指数函数,h(x)是一个特殊的超几何函数
我在 debian/amd64 上,我想使用 NDK-7b 为 android 2.2 交叉编译 GMP。我从 [gmplib](hg clone http://gmplib.org:8000/gmp
我是一名优秀的程序员,十分优秀!