问题标签 [mpir]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
160 浏览

c++ - 我需要取一个 mpir 整数并将其输出到 char 缓冲区中

我最近安装了 mpir 并拥有以下代码 (c++) 视觉工作室。

我想将 x 打印到缓冲区中。曾经使用 sprint,但 mpir 似乎没有任何 sprint

谢谢

大卫

0 投票
1 回答
353 浏览

c++ - C++ MPIR/MPFR 互操作性

我正在处理一个处理非常大的整数的项目,并且到目前为止整个项目都使用了基于GMPlib的MPIR库。

我现在需要一个 MPIR 不包含的对数函数。另一个库MPFR也基于 GMPlib,确实有这个。

两者都有一个整数类,它们的名称相似,MPIR 有 mpz_t,MPFR 有 mpfr_t。从两者来看,它们似乎都基于 GMPlib 中的相同基类。

是否可以以某种方式将 MPIR 中的整数转换为 MPFR 整数以使用 log 函数?不优雅的方法当然是使用字符串作为中介,但这会花费几秒钟。任何帮助,将不胜感激。

如果上下文有帮助,我正在尝试实现这个逻辑:Highest power of 2 less than n

0 投票
1 回答
236 浏览

c++ - 在 x64 中编译时,平方根查找器(使用 mpir,用 c++ 编写)因多个 lnk2019 编译时链接器错误而失败

最近,我一直在用 C++ 进行高精度数字运算。我一直在创建一个程序来使用 gmp(gnu 多精度)fork mpir(多精度整数和有理数)计算两个的平方根。当我在 Win32 模式下编译程序(1 个文件,大约 100 行)时,它编译并运行良好,但是当我在 x86 模式下开始遇到溢出时,我尝试切换到 x64 以希望进行更高精度的计算。当我尝试编译时,它给了我 8 个非常相似的链接器错误,例如“在函数 wmain 中遇到未解析的外部符号 __gmpf_get_str”。我在msdn和堆栈溢出之类的地方搜索和搜索,但是尽管我花了几个小时,但没有这样的运气。这是代码:

0 投票
1 回答
884 浏览

visual-studio - 自动安装 vsyasm

我正在尝试创建一种使用 Microsoft C++ 在 Windows 上构建 mpir 的自动化方法。一个必需的步骤似乎是安装vsyasm,所以我目前的小项目是创建一种自动化的方式来做到这一点,即可以通过批处理文件或程序完成而无需人工干预。

vsyasm 自述文件建议了三种方法:

第一个被 Windows 安全阻止。有什么不需要人工干预的方法吗?

第二种和第三种直接需要人工干预。是否有任何自动等效项,特别是如果您想最终从命令行而不是在 IDE 中构建项目?

我还有其他选择吗?

0 投票
1 回答
252 浏览

ubuntu-14.04 - 使用 MPIR 将具有大量数字的数字写入文件

我正在使用 MPIR/Ubuntu 14.04。

我有很多数字的大整数,比如 2^1920,但不知道如何将它写入文件 *.txt

没用。

我可以使用其他一些选项吗?

0 投票
1 回答
697 浏览

c++ - 出现错误 C2177:MPIR 常量太大

使用 MSVS 2010 在寡妇 7 上运行

我正在关注本教程以了解如何使用MPIR 库来添加两个大整数

我知道这个库应该可以帮助我添加非常大的数字,如下面的程序所示:

但我还是明白了 error C2177: constant too big。我误解了MPIR吗?

0 投票
1 回答
1170 浏览

c++ - C++ MPIR:寻找 mpz_sizeinbase() 的示例用法;

这是我第一次使用 MPIR 库。我必须对大整数进行一些计算。实际上,这些数字最多可以有 2048 位。我必须执行的第一个任务是找到输入的十进制值中的总位数。这需要使用对数。

在 MPIR 库中,我发现这是一个简单的函数,它给出了给定基数中的总位数,这是查找 MPIR 中不可用的对数的替代方法:

返回以给定基数中的位数测量的 op 的大小。base 可以在 2 到 36 之间变化。 op 的符号被忽略,只使用绝对值。结果将是精确的或 1 太大。如果 base 是 2 的幂,则结果总是准确的。如果 op 为零,则返回值始终为 1。此函数可用于确定将 op 转换为字符串时所需的空间。正确的分配量通常比 mpz_sizeinbase 返回的值多两个,一个用于负号,一个用于空终止符。请注意,mpz_sizeinbase(op,2) 可用于定位 op 中的最高有效 1 位,从 1 开始计数。(与从 0 开始的按位函数不同,请参阅第

我正在尝试在我的程序中按如下方式使用此功能:

答案应该是 3。

但是在编译过程中出现以下错误:

错误 13 错误 C2440:“=”:无法从“int”转换为“mpz_t”逻辑操作.cpp 27 1 逻辑操作

错误 14 错误 C2664:“__gmpz_sizeinbase”:无法将参数 1 从“int”转换为“mpz_srcptr”logicaloperations.cpp 28 1 logicaloperations **

这仅用于测试,在我的实际代码中,我将具有如下值:

能否指点一下如何正确使用这个函数的参数?

一个例子就足够了。

0 投票
1 回答
179 浏览

c++ - 在我的代码中使用 mpir_ui 类型时遇到问题

我想用这个功能

为此,我必须提供 mpir_ui

所以每当我试图声明这一点时,

它说:

我是否缺少任何头文件?

所有其他类型和功能都可以工作,但只有这一个失败了。

这些是我的头文件

0 投票
1 回答
333 浏览

c++ - 在 mpz_t (MPIR) 中分配多少空间?

假设我知道我的号码可能是多少位数(并且我想第一次分配正确的空间量,我该如何计算我需要分配的字节数?我想我总是可以将值设置为是1*10^(num digits)然后0之后,但感觉不对,就像我在打败目标一样。

为清楚起见进行编辑:我想知道存储带n十进制数字的整数需要多少字节,以及 MPIR 的实现是否会影响这一点。@JonathonLeffler 在他的回答的评论中提供了正确的答案。

0 投票
0 回答
161 浏览

c++ - MPIR 中 mpf 的余数/模数

我想知道在 MPIR 中检查一个数字是否为整数(或超接近它)的最佳方法是什么。我正在取一个数字的平方根,mpf_sqrt()然后我想检查平方根是否产生一个整数。使用 java,我使用.remainder()BigDecimal,然后查看余数是大于 .99999 还是小于 1.000001。但我没有看到remainder()mpf 的模数。我正在使用 Visual Studio C++。感谢所有帮助!