标签: gmp

如何使用GMP计算2 ^ -18?

在我的尴尬中,我刚刚发现,喂养负面指数mpz_pow_ui并不能很好地发挥作用.("手册确实说无符号长,你知道.")对于其他mpz_pow功能,手册使用了我不理解的概念.例如," base ^ exp mod mod "如下:

void mpz_powm (mpz_t rop, mpz_t base, mpz_t exp, mpz_t mod) 
void mpz_powm_ui (mpz_t rop, mpz_t base, unsigned long int exp, mpz_t mod)
Set _rop_ to _base_^_exp_ mod _mod_.
Negative exp is supported if an inverse base-1 mod mod exists (see mpz_invert in Section 5.9 [Number Theoretic Functions], page 35). If an inverse doesn’t exist then a divide by zero is raised.
Run Code Online (Sandbox Code Playgroud)

在下面的代码中,我需要更改什么才能使其能够处理负指数?

#define Z(x) mpz_t x; mpz_init( x ); …
Run Code Online (Sandbox Code Playgroud)

c gmp

4
推荐指数
2
解决办法
2202
查看次数

GMP将mpz转换为mpf

我正在使用GMP,我希望能够快速转换mpzmpf.我查看了图书馆,找不到多少.我能想到的最好的事情就是:

mpz_t x;
/* Insert code here that assigns some value to x */
char buf[SIZE];
gmp_sprintf(buf, "%Zd", x);
mpf_t y;
mpf_set_str(y, buf);
Run Code Online (Sandbox Code Playgroud)

此解决方案需要重复转换为字符串.此外,它受到限制SIZE,我认为没有办法预先决定SIZE需要多大.有没有更好的方法来进行这种转换?

c gmp

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

GMP gmp_printf()

我刚刚开始搞乱GMP,我似乎无法正确打印数字.这是我正在尝试的:

#include <stdio.h>
#include <stdlib.h>
#include "gmp.h"
int main(){
  mpz_t  n;
  mpz_init (n);
  mpz_set_ui(n, 2);

  gmp_printf("attempt 1: %d \n", n);
  gmp_printf("attempt 2: %Z \n", n);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我知道这一定是非常简单的......但我只是没有看到它.

我的输出是:

attempt 1: 1606416528 
attempt 2: Z 
Run Code Online (Sandbox Code Playgroud)

我想我可能只是使用mpz_set_ui错了...

编辑:

%Zd的作品我也试过%n,我认为它会起作用,但不是......绝对需要一些帮助.

c gmp

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

计算pi的数字

我已经使用GMP库和C++来编写Gauss-Legendre算法的实现来计算pi的数字.

它有正确的输出,但问题是我不知道输出"变坏",因为我必须在代码中指定精度.

以下是使用64位精度的输出:3.141592653589793238*35*,后两位数字不正确.

我的问题是,如果我想ň pi的数字,有多少精度比特b,多少算法的迭代将需要?

谢谢

c++ floating-point pi gmp arbitrary-precision

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

GMP mpz_array_init是一个过时的函数 - 我们应该如何初始化mpz数组?

我曾经几次只使用过GNU MP Bignum Library,我有兴趣看到我以前分配/启动数组的方式现在已经过时了.从整数特殊功能:

5.16特殊功能

本节中的功能用于各种特殊目的.大多数应用程序不需要它们. - Function:void mpz_array_init(mpz_t integer_array,mp_size_t array_size,mp_size_t fixed_num_bits)

This is an obsolete function. Do not use it.
Run Code Online (Sandbox Code Playgroud)

这是我分配和初始化数组的方式mpz_t.

int array_size = 100;
mpz_t *num_arr;
num_arr = malloc(arr_size * sizeof(mpz_t));
mpz_array_init(*num_arr, array_size, 1024);
Run Code Online (Sandbox Code Playgroud)

这仍然可以没有和错误或警告,顺便说一句,但现在这个功能被列为过时,在C中使用GMP分配数组的正确方法是什么?

c gmp

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

尝试将GNU的GMP库中的类型用作Bison的yylval类型时出错

我试图通过在Bison文件中包含以下内容来使用mpz_tGMP库中的类型作为类型yylval:

%define api.value.type {mpz_t}
Run Code Online (Sandbox Code Playgroud)

我检查了生成的解析器并正确生成了该行typedef mpz_t YYSTYPE,YYSTYPE稍后用于创建yylval.

mpz_t被typdefed如typedef __mpz_struct mpz_t[1];在GMP头文件gmp.h.反过来,__mpz_struct是典型的

typedef struct
{
    // struct members here - don't believe they're important
} __mpz_struct;
Run Code Online (Sandbox Code Playgroud)

Bison运行没有错误,但每当我尝试创建可执行文件时,我都会收到以下错误:

calc.tab.c:在函数'yyparse'中:

calc.tab.c:1148:12:错误:从类型'struct __mpz_struct*'分配类型'YYSTYPE'时出现不兼容的类型

*++ yyvsp = yylval;

yyvsp被定义为指向YYSTYPE.

知道怎么解决这个问题吗?

c gmp bison

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

如何管理mpz_t数组

我正在使用GMP,我需要一个数组mpz_t.sizeof(mpz_t)给出了16,但是我存储的数字要大得多.是否mpz_t"到位"增长,即我是否需要分配更多内存并允许就地增长,或者GMP是否在其他地方为其分配空间并保留引用(在这种情况下,我假设,我不会必须采取任何特殊的预防措施.)

c gmp

4
推荐指数
2
解决办法
1334
查看次数

用Emscripten编译GMP / MPFR

好吧,这让我发疯了。我已经尝试了至少一个月,但互联网上没有任何帮助。

我跟着步骤。当我执行这些步骤时,即使该示例也不起作用,因为当我执行此步骤时,我会明白这一点。

bitcode ==> javascript
warning: unresolved symbol: __gmpz_cmp
warning: unresolved symbol: __gmpz_mul_ui
warning: unresolved symbol: __gmpz_submul_ui
warning: unresolved symbol: __gmpz_init_set_ui
warning: unresolved symbol: __gmpz_mul_2exp
warning: unresolved symbol: __gmpz_init
warning: unresolved symbol: __gmpz_fdiv_qr
warning: unresolved symbol: __gmpz_add
Run Code Online (Sandbox Code Playgroud)

当我运行生成的complete.js文件时-

missing function: __gmpz_init
-1
-1

/home/ubuntu/workspace/gmp.js/complete.js:117
      throw ex;
      ^
abort(-1) at Error
    at jsStackTrace (/home/ubuntu/workspace/gmp.js/complete.js:1045:13)
    at stackTrace (/home/ubuntu/workspace/gmp.js/complete.js:1062:22)
    at abort (/home/ubuntu/workspace/gmp.js/complete.js:6743:44)
    at ___gmpz_init (/home/ubuntu/workspace/gmp.js/complete.js:1744:56)
    at Object._main (/home/ubuntu/workspace/gmp.js/complete.js:4978:2)
    at Object.callMain (/home/ubuntu/workspace/gmp.js/complete.js:6627:30)
    at doRun (/home/ubuntu/workspace/gmp.js/complete.js:6681:60)
    at run (/home/ubuntu/workspace/gmp.js/complete.js:6695:5)
    at Object.<anonymous> (/home/ubuntu/workspace/gmp.js/complete.js:6769:1)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript mpfr gmp emscripten asm.js

4
推荐指数
2
解决办法
849
查看次数

XAMPP(WIndows)PHP GMP函数

有没有办法在不使用虚拟机的情况下在Windows上使用PHP GMP功能

提前致谢.

[ http://php.net/manual/en/ref.gmp.ph]

php windows xampp gmp

4
推荐指数
3
解决办法
7479
查看次数

在Alpine上从源代码安装GCC

尝试在Alpine上安装GCC 6.4.0时,我遇到了:

checking for the correct version of gmp.h... yes
checking for the correct version of mpfr.h... yes
checking for the correct version of mpc.h... yes
checking for the correct version of the gmp/mpfr/mpc libraries... no
Run Code Online (Sandbox Code Playgroud)

但是在中/usr/lib,这似乎是标准的查找目录,我有:

libgmp.a
libgmp.so
libgmp.so.10
libgmp.so.10.3.2
libmpc.so.3
libmpc.so.3.0.0
libmpfr.so.4
libmpfr.so.4.1.5
Run Code Online (Sandbox Code Playgroud)

有什么事吗

linux gcc gmp alpine-linux lib

4
推荐指数
3
解决办法
6416
查看次数