gmp 相关问题

GNU多精度库(GMP)是一个成熟的免费库,用于任意精度算术,支持大有符号整数,有理数和浮点数。基本接口适用于C,但包含Ada,C ++,C#,OCaml,Perl,PHP和Python等其他语言的包装器。它在GNU LGPL下发布,用于加密应用程序和Mathematica和Maple等计算机代数系统。

已安装 GMP 但看不到它

我正在尝试安装帕尔马多面体库,它在配置文件中将 GMP 作为依赖项。所以我下载了 GMP,运行“./configure --enable-cxx; make; sudo make install;”这一切似乎...

回答 1 投票 0

编译旧版本的gcc

我正在尝试在 CentOS 5.5 操作系统上使用 gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50) 编译 gcc 版本 gcc4.3.2。最初,编译器抱怨需要 gmp 和 mpfr 库,而这些库......

回答 1 投票 0

我的压缩文件上写了一些垃圾数据(我自己的算法)

这是我的数据压缩程序(它是免费的,但有商业用途的版权)。这个程序假设读取一个文件作为数据号并找到文件的一个巨大的n次根(取决于文件大小......

回答 1 投票 0

通过平方计算二的幂

我正在尝试通过以 2^n − 1 为模的 2 次方的平方来实现求幂。 我不存储 2 的幂,只存储它的指数(例如,4 = 2^2,指数是 2)。 例如,我想要合作...

回答 1 投票 0

Stack 尝试查找 libgmp 然后失败,即使根本没有依赖项

我使用 nix-darwin 并在 ~/.stack/config.yaml 中启用了 nix。 今天早些时候我做了一个 sudo nix-collect-garbage -d 然后很多事情开始崩溃。 最小可重现示例: 堆栈新mwe cd mwe ...

回答 1 投票 0

在 Windows 上使用 GMP 编译 C 库

我不是程序员,只是时不时写一些供个人使用的代码,所以我没有太多的经验和知识。我在 Linux 上使用 CMake 和 gcc/g++,或者在 Android 上使用 clang(在 Termux 中)....

回答 1 投票 0

GMP 进口/出口

我的导入/导出 GMP 功能有问题。 我尝试转换负数和正大整数,但是当我使用负数时,我会丢失符号。 有相关的例子吗? 经验...

回答 2 投票 0

Finit 循环未完成或显示段错误

我使用 GNU BC(基本计算器)对 999,999 求幂到 999,999,它在 10 分钟内得到答案,但是当我想找到一个大文件(1.1 GB)的 999,999 根时,它在 5 小时后显示段错误...

回答 1 投票 0

如何使用我刚刚从源代码构建的 GMP 库?

我有一个带有以下标头的小型 C 程序: #包括 我编译它是这样做的: gcc test.c -o test.o -L/gmp_install/lib -lgmp 然后我就可以正常运行了。但它正在使用“st...

回答 1 投票 0

C++ GMP 库 ostream 运算符<< compiles but doesn't link?

$ apt-cache 显示 libgmp10 软件包:libgmp10 ... 版本:2:5.0.2+dfsg-2ubuntu2 测试.cpp: #包括 #包括 使用命名空间 std; int main() { mpz_class x = 4...

回答 3 投票 0

gmp_mod 参数 #1 ($num1) 不是整数字符串 Hashids 包

我在运行 PHP 8.3 的 Laravel 11 项目中使用最新版本的 Hashids,并偶然发现了一个问题,如下所示,这是一个数字字符串: (new Hashids('', 7))->编码('

回答 1 投票 0

GMP mpf 精度到有效位数的硬性规则是什么

GMP 目前开箱即用,精度为 64 位精度(我认为这就是 mp_bitcnt_t 的名称)。 对我来说,我认为这最多可以达到 1x10e-22 左右的值(我在哪里

回答 1 投票 0

将 char* 数组从 C 传递到 Swift 中

为了明确起见,我想向我的 C 函数发送一个固定长度的空字符串数组,例如: [“”、“”、“”] 期望数组返回 pop...

回答 1 投票 0

golang chan发送方和接收队列顺序问题

这是我的代码,为什么答案不是顺序。 GOMAXPROCS 是 1,我很困惑为什么第一个收到消息的人是最后一个加入队列的 Goroutine! 我知道 P > 1 个例子...

回答 1 投票 0

在 Alpine 上从源代码安装 GCC

尝试在 Alpine 上安装 GCC 6.4.0 时,我遇到了: 检查 gmp.h 的正确版本...是的 检查 mpfr.h 的版本是否正确...是的 检查 mpc 版本是否正确......

回答 3 投票 0

SIGSEGV 与 MPZ_Class 和 eagerst

我是 C++ 编程新手,为了改进我想实现 bleichenbacher 攻击。我之前用 python 构建了一个,并认为这将是学习 c++ 的一个很好的练习......

回答 1 投票 0

如何使用 GMP 高效地添加 3 个大整数

我想对 ~2048 位有符号整数执行 x = a + b + c 。目前我的代码看起来像 mpz_add(x, a, b); mpz_add(x, x, c); 有没有一个函数可以做到这一点?这种事在我的身上发生过很多次

回答 3 投票 0

SWIG、Python-C++ 和 GMP – 将 int 类型参数传递给 SWIG 生成的共享库中接受 mpz_class 类型参数的函数

我正在尝试实现一个包装器,用于对公钥运行费马分解测试。我已经使用 SWIG 成功生成了共享库: 费马.h: #ifndef FERMAT_H #定义FERMAT_H #我...

回答 1 投票 0

$PATH 或 /usr5bin 中没有可用的 M4

作为一个漫长而肮脏的故事的一部分,其最终目标只是安装 GMP 以与 Windows 中的 code::blocks 一起使用,我正在尝试配置 gmp。我使用以下命令执行此操作: ./配置...

回答 5 投票 0

为什么 OpenMP 不能加速我的 C 程序?

我是 OpenMP 的新手,我试图用它来加速我的 C 程序(使用 GMP)。下面的代码是我所做的素性测试: #包括 #包括 #包括 我是 OpenMP 的新手,我试图用它来加速我的 C 程序(使用 GMP)。下面的代码是我所做的素性测试: #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <math.h> #include <omp.h> #include <gmp.h> int lucas_lehmer(unsigned long int p) { mpz_t M, s, t; // Let M = 2^p - 1 mpz_init_set_ui(t, p); mpz_init(M); mpz_setbit(M, p); mpz_sub_ui(M, M, 1); unsigned long int I; mpz_init_set_ui(s, 4); #pragma omp parallel for { for (i = 3; i <= p; i++) { printf("Processed: %d\n", i-3); mpz_mul(s, s, s); mpz_sub_ui(s, s, 2); /* mpz_mod(s, s, mp) but more efficiently done gisen mod 2^p-1 */ if (mpz_sgn(s) < 0) mpz_add(s, s, M); /* while (n > mp) { n = (n >> p) + (n & mp) } if (n==mp) n=0 */ /* but in this case we can hase at most one loop plus a carry */ mpz_tdiv_r_2exp(t, s, p); mpz_tdiv_q_2exp(s, s, p); mpz_add(s, s, t); #pragma omp parallel { while (mpz_cmp(s, M) >= 0) mpz_sub(s, s, M); } } } int res; res = !mpz_sgn(s); mpz_clear(t); mpz_clear(M); mpz_clear(s); return res; } int main() { unsigned long int p; printf("Enter an exponent:"); scanf("%d", &p); int boolean; boolean = lucas_lehmer(p); if (lucas_lehmer(p)) { printf("\nPrime number: True\n"); } else { printf("\nPrime number: False\n"); } system("pause"); return 0; } 我添加了#pragma omp parallel for和#pragma omp parallel,看看程序的性能是否有所提高。 使用命令g++ lucas_lehmer.c -lgmp -I C:/gmp-6.2.0/include/ -L C:/gmp-6.2.0/lib/(我使用MinGW-MSYS)编译后,与不使用OpenMP的代码相比,我发现代码没有加速。这里出了什么问题?我该如何解决这个问题? 可选问题:上面的代码似乎循环有问题。它在检查之前重复循环两次。我该如何预防这种情况? 您的代码纯粹是顺序的。每行代码都会读取并修改变量“s”,并且 for 循环的每次迭代都需要前一个循环完成。 编译器无法并行化任何内容。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.