【问题标题】:MSVC++ "official" arbitrary precision libraryMSVC++“官方”任意精度库
【发布时间】:2011-10-11 23:29:33
【问题描述】:
我正在寻找一个特定于 MSVC++ 的任意精度库。因为我的工作不需要跨平台兼容性,所以我宁愿不要把这一切搞得一团糟。
我尝试查看NTL,但在看到诸如“These steps work with MSVC++ v6”之类的语句时,我不禁在精神上将其视为已过时。最新版本:2009 08 14。
MPIR 看起来很有前途(最新版本 2011 06 14),这是我迄今为止发现的最好的东西。
对于从 MSVC++(本机代码,而不是 .NET)进行至少 128 位浮点运算的任何建议?
【问题讨论】:
标签:
visual-c++
arbitrary-precision
【解决方案1】:
MPIR 是目前可用的最好的 C++ 多精度(任意精度)算术库。它是跨平台的事实是一个加号。在 MSVC++ 2010 上编译很容易,您只需确保打开 README.TXT(下载附带)并阅读the Documentation,(在列表中被悄悄列为第 3 次下载,但实际上相当好)。
它基于GMP 并取代NTL,因为它没有得到维护,所以应该几乎被放弃。
MPIR 为 大量 CPU 构建和汇编代码,包括大量的 Intel 和 AMD 芯片。
我在构建过程中遇到的一个问题(在两台不同的机器上!)是 CPU 类型没有正确识别。在一台机器上我有一个“k102”处理器(可以被认为是“k10”),在另一台机器上我有一个“westmere”(可以被认为是“nehalem”)。无论如何,解决方法是 BROWSE CONFIGURATION.BAT 并查找您的 CPU 类型。当您调用“configure.bat”时,请使用如下行:
configure --cpu-k10
如果您知道自己拥有兼容 AMD k10 的 CPU。这发生在 AMD 1090T 处理器上。
【解决方案2】:
MPIR 可以使用 Visual Studio 2017 编译。
Brian Gladman 维护了一个 MPIR 的分支,可以很好地与 Visual Studio 一起构建:
https://github.com/BrianGladman/mpir
# Open a "Visual Studio x64 Native Tools Prompt"
cd C:\github
git clone https://github.com/BrianGladman/mpir
cd mpir\msvc\vs17
msbuild gc lib x64 release
如果这不起作用,请尝试在同一目录中运行 gen_*.bat 文件。
它还需要一个 Windows SDK。
Brian 还维护了一个在 Visual Studio 下构建的 MPFR 分支:
https://github.com/BrianGladman/mpfr
Boost 还包括用于 MPFR 和 GMP 多精度库的 C++ 绑定。 Boost 维护良好,可以在任何版本的 Visual Studio 中轻松编译。