问题标签 [mpfr]

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 投票
3 回答
774 浏览

c - Haskell FFI / C MPFR 库包装问题

为了创建任意精度的浮点数/替换 Double,我尝试使用 FFI 包装MPFR,但尽管我付出了所有努力,但最简单的代码仍然不起作用。它编译,它运行,但在假装工作一段时间后它会模拟地崩溃。一个简单的 C 版本代码可以愉快地将数字“1”打印到(小数点后 640 位)总共 10,000 次。Haskell 版本,当被要求做同样的事情时,在“1.0000...0000”的 289 次打印输出和 385 次打印输出后默默地破坏(?)数据,它导致断言失败和炸弹。我不知道如何继续调试它,因为它“应该工作”。

该代码可以在http://hpaste.org/10923阅读并在http://www.updike.org/mpfr-broken.tar.gz下载

我在 FreeBSD 6 上使用 GHC 6.83,在 Mac OS X 上使用 GHC 6.8.2。请注意,您需要为库和头文件(以及那些从 GMP) 来成功编译它。

问题

  • 为什么 C 版本可以工作,而 Haskell 版本却失败了?接近 FFI 时我还缺少什么?我尝试了 StablePtrs 并得到了完全相同的结果。

  • 其他人可以通过编译和运行我的代码来验证这是否只是 Mac/BSD 的问题吗?(C 代码“有效”吗?Haskell 代码“无效”有效吗?)Linux 和 Windows 上的任何人都可以尝试编译/运行并查看是否得到相同的结果吗?

C代码:(works.c)

Haskell 代码:(Main.hs --- 不起作用)

0 投票
2 回答
27791 浏览

c++ - 用 Visual Studio 构建 GMP 库?

有没有一种简单的方法可以在 Windows 下使用 Visual Studio 2005构建 GMP(GNU 多精度算术库, http ://gmplib.org)?我试图找到有关自己建立图书馆的信息,但找不到任何真正帮助我的东西。我自己对构建库不是很有经验(我已经设法构建了 boost,但仅此而已)。

或者是否有我不知道的稳定(预建)GMP 发行版?

MPIR 是一个有效的替代方案(http://www.mpir.org)吗?GMP 站点上关于 MPIR 的评论:对于某些 Windows 用户来说,这种“愤怒的 GMP 分支”可能是真正 GMP 的替代品,但他们必须处理大量反 GMP 情绪。

编辑: MPFR C++ 包装页面包含 Visual Studio 的 GMP/MPFR 解决方案的信息/链接以及编译的 gmp/mpfr 库:http: //www.holoborodko.com/pavel/mpfr/

0 投票
5 回答
1640 浏览

c++ - 平台无关的数学库

是否有一个公开可用的库可以为 sin、cos、floor、ceil、exp 和登录 32 位和 64 位 linux、solaris 以及可能的其他平台产生完全相同的结果?

我正在考虑以下替代方案:
a)在每个平台上编译的cephesgcc -mfpmath=sse和相同的优化级别......但不清楚这是否可行。
b) MPFR,但我担心这会太慢。

关于精度(已编辑):对于这个特定的应用程序,我真的不需要产生在数值上最接近精确值的值的东西。我只需要在所有平台、操作系统和“位”上的答案都完全相同。话虽如此,这些值需要合理(5 位数可能就足够了)。对于在我最初的问题中没有明确说明这一点,我深表歉意。

我想具有足够低精度设置的 MAPM 或 MPFR 可能会解决问题,但我希望找到一些没有“多精度”机械/风味的东西。无论如何,我会试试这个。

0 投票
1 回答
486 浏览

math - MPFR 舍入问题

我刚刚开始使用 MPFR 任意精度库,很快就会遇到非常奇怪的行为。使用它的主要目标是提高大参数“触发”的精度,这在 MPFR 中非常有效。

但后来我决定检查简单的数学,这令人难以置信——即使在具有严格答案的简单示例中也存在舍入错误,并且不依赖于使用的精度。

即使在像 1.1 * 1 这样的示例中,结果也是 1.10000000000000008881784...而且这个结果以疯狂的 2000 位精度(正常双精度为 53)给出!

可能是我的系统问题,但在线MPFR也存在类似问题。您可以在线尝试这样的示例:http: //ex-cs.sist.ac.jp/~tkouya/try_mpfr.html

1 * 1.1 @ 64 位 = 1.10000000000000000002

但是在线版本会随着精度的提高而进一步移动错误,但在我的安装中 - 没有。

我的系统:Ubuntu 9.10 + gmp 5.0.0.1 + mpfr 2.4.2

0 投票
1 回答
731 浏览

c - MPFR 将 0.9999 舍入为 1?

我正在尝试使用 mpfr_set_str() 函数将值 0.9999 存储到 mpfr_t 变量中

但 0.9999 在存储期间被舍入为 1(或其他值!= 0.9999),无论舍入值如何(GMP_RNDD、GMP_RNDU、GMP_RNDN、GMP_RNDZ)

那么使用 mpfr_set_str() 将 0.9999 存储在 mpfr_t 变量中的最佳方法是什么?是否可以?

这是我的测试程序,它打印“缓冲区为:1”,而不是想要的“缓冲区为:0.9999”:

谢谢您的帮助

0 投票
7 回答
35735 浏览

configuration - GCC 找不到 GMP、MPFR 和 MPC 库

我正在尝试在 Mac OS 10.5.7 上交叉编译 GCC。我在安装 GMP、MPFR 和 MPC 后使用此命令配置 GCC:

我收到了这个错误:

为什么 GCC 可以找到 GMP、MPFR 和 MPC 的标头,但找不到库?

0 投票
1 回答
292 浏览

c++ - 将 mpfr_t(或任何其他任意精度库类型)转换为 __float128

我想我真的有两个问题。

1) 我想知道是否有人知道在 GCC 中将 mpfr_t 类型转换为 __float128 类型的方法。我环顾四周,在 mpfr bugfixes 网站上找到了一个帖子,其中有人讨论了他们尝试编写一个从 __float128 到 mpfr_t 的转换器,但它似乎在去年的某个时候下降了。

2) 如果没有人知道将 mpfr_t 转换为 __float128 的方法,有没有人知道另一个任意精度的 C/C++ 库可以

谢谢

0 投票
2 回答
886 浏览

c - mpfr_t 的类型是什么,如何制作这种类型的 C 函数?

我刚刚开始使用 GMP 和 MPFR。我正在用 C 语言编写一个程序,并希望创建一个函数,该函数(例如)将 mpfr_t 变量作为输入并返回一个 mpfr_t 变量。我不确定 mpfr_t 的定义,但我天真地尝试这样做并得到编译错误。

任何有关此的信息将不胜感激。

0 投票
4 回答
2628 浏览

gcc - 让 MPFR 在 cygwin 上构建

我花了一整天的时间来设置 GCC

http://cygwin.wikia.com/wiki/How_to_install_GCC_4.3.0

在 gcc make 步骤中,它告诉我无论出于何种原因它都需要一个 c++ 编译器来继续,所以我以通常的方式更新了 Cygwin 并获得了 gcc-c++。

之后,cgywin 帮我删除了我之前安装的 3 个 prereq 库,

所以我开始重新制作它们。GMP 工作正常,然后我进入 MPFR。无论出于何种原因,MPFR 都会引发此错误:

资源在这里提到了这个错误

我很确定它可以找到 GMP,因为 cygcheck 显示它没有问题,配置甚至提到它找到了它。

当我尝试:

它抛出:

到目前为止,尽管谷歌搜索并尝试了几个小时,但我仍然无法让 MPFR 正常工作。

MPC 也无法以通常的方式找到 GMP。

我还尝试将库交给子目录中的 GCC 并让它编译它们。

当我尝试这样做时,它会进入 make 步骤,然后抛出stage1-bubble错误并失败。没有错误或任何内容的描述。

我不知道还能尝试什么。

0 投票
1 回答
2169 浏览

gcc - 编译旧版本的 gcc

我正在尝试在 CentOS 5.5 操作系统上使用 gcc 版本 4.1.2 20080704 (Red Hat 4.1.2-50) 编译 gcc 版本 gcc4.3.2。最初编译器抱怨需要 gmp 和 mpfr 库,然后成功下载、编译和安装。

安装后,使用的新配置命令是:

../gcc4.3.2/gcc-4.3.2/configure --prefix=/home/shahw/gccdir/ --with-gmp=/usr/local/ --with-mpfr=/usr/local/

我现在遇到以下错误:

config.log 最后包含以下内容:

任何对潜在解决方案的提示将不胜感激。