标签: gmp

在计算它之前,可以知道一个因子有多大吗?

我正在使用GMP来计算非常大的因子(例如234234!).在进行计算之前,有没有什么方法可以知道结果将会(或可能)长多少位数?

language-agnostic gmp factorial

3
推荐指数
2
解决办法
1379
查看次数

GMP 变量的位大小

如何知道 GMP 中声明的变量的大小?或者我们如何确定 GMP 中整数的大小?

mpz_random(temp,1);
Run Code Online (Sandbox Code Playgroud)

在手册中,给出这个函数将1limb(=我的comp的32位)大小分配给“temp”....但它只有9位数字..所以我不认为32位大小的数字只包含9位数字数字..

所以请帮我知道 GMP 中整数变量的大小..

谢谢在副词..

gmp

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

GMP对java BIG INTEGERS ,,,

哪个工具最适合用于访问大比特数以测试加密系统..无论是GMP库还是JAVA大整数.. ?? 在速度,记忆,功能,对crptosystems的灵活性(数学函数,如反转,pwm..etc)方面.

gmp

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

将uint64转换为GMP/MPIR编号

我在Windows上使用MPIR 2.4.0(MSVC 2010),我试图将无符号的64位整数添加到mpz_t数字.但是,似乎MPIR/GMP不支持64位整数和mpz_t之间的直接转换.这是否意味着我必须将我的uint64转换为字符串并通过mpz_init_set_str读取?这既不是很有吸引力,也不是很快 - 两次转换都没有.

我错过了什么或者在这里使用的技巧/黑客是什么?

干杯,

菲利普

c++ gmp uint64

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

gmpxx.h:没有这样的文件或目录

我刚刚从Sourceforge 的官方项目页面安装了一个全新的mingw(32位)副本.我在包中安装了所有内容,所有编译器等等.然后我从这里下载gmp for MinGW.我将gmp-5.0.1-1-mingw32-src.tar.lzma提取到我的mingw文件夹中,然后./pkgbuild从那里运行.它继续运行几分钟,然后打印出类似的东西COMPLETED EVERYTHING OK, EVERYTHING PASS.

然后我写下这个简单的例子,检查它是否会起作用:

#include <gmpxx.h>

int main (void)
{
  mpz_class a, b, c;

  a = 1234;
  b = "-5678";
  c = a+b;
  cout << "sum is " << c << "\n";
  cout << "absolute value is " << abs(c) << "\n";

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

然后使用编译它g++ mycxxprog.cc -lgmpxx -lgmp.我得到的唯一答案是:

Fatal error: gmpxx.h: No such file or directory.
Run Code Online (Sandbox Code Playgroud)

有人有任何暗示吗?我真的不知道该怎么办......

c++ mingw gmp mingw32

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

为什么 Nettle 2.4 的 `configure` 找不到 GMP 5.0.2?

我正在尝试在 Mac OS X 10.5 (Leopard) 服务器上构建GnuTLS(是的,我知道,它有点过时,但这就是该服务器目前正在运行的),并且在构建Nettle时遇到了问题:我已经构建并安装了GMP,但 Nettleconfigure找不到它。

我按如下方式构建并安装了 GMP 5.0.2(GCC 版本解决方案来自此处):

curl -O ftp://ftp.gmplib.org/pub/gmp-5.0.2/gmp-5.0.2.tar.bz2
tar xjf gmp-5.0.2.tar.bz2
pushd gmp-5.0.2
CC=gcc-4.2 CXX=g++4.2 ./configure --prefix=/usr/local
make
sudo make install
popd
Run Code Online (Sandbox Code Playgroud)

Amake check通过了所有测试,我最终安装了以下 GMP 文件:

/usr/local/include/gmp.h
/usr/local/lib/libgmp.10.dylib
/usr/local/lib/libgmp.a
/usr/local/lib/libgmp.dylib
/usr/local/lib/libgmp.la
/usr/local/share/info/gmp.info
/usr/local/share/info/gmp.info-1
/usr/local/share/info/gmp.info-2
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试构建 Nettle 2.4 时,如下所示:

curl -O http://www.lysator.liu.se/~nisse/archive/nettle-2.4.tar.gz
tar xzf nettle-2.4.tar.gz
pushd nettle-2.4
./configure --prefix=/usr/local
make
sudo make install
popd
Run Code Online (Sandbox Code Playgroud)

libhogweed它构建并安装成功,但由于缺少 GMP 而无法构建。经过进一步检查,我在输出中发现了以下警告configure

checking for …
Run Code Online (Sandbox Code Playgroud)

macos ssl gnu configure gmp

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

GMP mpf_pow_ui 函数

我正在使用 gmp 的 mpf_t 来尝试获得非常高的精度。

我的精度范围从负数万亿到正数万亿,以及这些数字的 1。但是 mpf 不支持允许负指数的幂函数,如果我想将值提高到 10^-30,有没有办法解决这个问题?

http://gmplib.org/manual/Float-Arithmetic.html#Float-Arithmetic

当我尝试使用 mpf_pow_ui 时,当我的 exp 为负数时,我的 gdp 输出:

(gdb) p exp_multiplier
$9 = {{_mp_prec = 2, _mp_size = 3, _mp_exp = 957480584338323631, _mp_d = 0x605070}}
Run Code Online (Sandbox Code Playgroud)

这最终会导致段错误。

c precision gmp

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

GMP - 分度精度或印刷问题

我需要显示整数平均计算结果的前 100 位有意义的数字。系列整数存储在 mpz_t 类型的数组中,然后将其求和到 mpq_t 并除以另一个 mpq_t(计数)

代码:

mpq_t sum;
mpq_init(sum);
//same for variable count, they are filled from mpz_t

//display for check
gmp_printf("%.Qd\n", sum); <- here everything correct
gmp_printf("%.Qd\n", count); <- here also

mpq_div(sum, sum, count);

//to display with floating point
mpf_t avg;
mpf_init(avg);
mpf_set_q(avg, sum);

gmp_printf("%.100Ff\n", avg);    
Run Code Online (Sandbox Code Playgroud)

最后一行的显示,假设 sum = 2, count = 3 是错误的。它在大约 10-15 位数字后上限并用 0 填充。对于 (2/3),它是 0.66666666670000...

所以有两件事:

  1. 我不想将其下限/上限,只需在 100 位数字后截断
  2. 将所有 100 位数字填入有意义的数字

因此对于 (2/3) 期望的输出是:

0.666...666(一百个6,末尾也有6)

c++ gmp

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

具有mpz/mpfr值的numpy数组

我希望有一个mpz/mpfr值的numpy数组.因为我的代码:

import numpy as np
import gmpy2
A=np.ones((5,5));
print A/gmpy2.mpfr(1);
Run Code Online (Sandbox Code Playgroud)

产生:

RuntimeWarning: invalid value encountered in divide
  print A/gmpy2.mpfr(1);
[[1.0 1.0 1.0 1.0 1.0]
 [1.0 1.0 1.0 1.0 1.0]
 [1.0 1.0 1.0 1.0 1.0]
 [1.0 1.0 1.0 1.0 1.0]
 [1.0 1.0 1.0 1.0 1.0]]
Run Code Online (Sandbox Code Playgroud)

据我所知,将gmpy mpfr转换为numpy float64是不可能的.那么我怎么能首先得到一个带有mpfr值的numpy数组呢?

谢谢.

python numpy type-conversion gmp

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

在 Eigen3 中使用 GMP

我正在开发一些示例程序,并尝试使用 Eigen3 库提供的矩阵功能。我想将高精度整数变量(mpz_t)存储在(100,100)矩阵中。为了存储整数,已经有内置的数据类型MatrixXd。同样,只是想要高精度变量。请分享一些建议。

谢谢。

gmp eigen

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