我正在寻找一个 MSVC++ 特定的任意精度库。因为我的工作不需要跨平台兼容性,所以我宁愿不要把这一切搞得一团糟。
我尝试查看NTL,但在看到诸如“这些步骤适用于 MSVC++ v6 ”之类的声明时,我不禁在精神上将其视为过时的内容。最新版本: 2009 08 14
.
MPIR看起来很有前途(最新版本2011 06 14
),它是我迄今为止发现的最好的东西。
对于从 MSVC++(本机代码,而不是 .NET)进行至少128 位浮点运算的任何建议?
我正在寻找一个 MSVC++ 特定的任意精度库。因为我的工作不需要跨平台兼容性,所以我宁愿不要把这一切搞得一团糟。
我尝试查看NTL,但在看到诸如“这些步骤适用于 MSVC++ v6 ”之类的声明时,我不禁在精神上将其视为过时的内容。最新版本: 2009 08 14
.
MPIR看起来很有前途(最新版本2011 06 14
),它是我迄今为止发现的最好的东西。
对于从 MSVC++(本机代码,而不是 .NET)进行至少128 位浮点运算的任何建议?
MPIR是目前可用的最好的 C++ 多精度(任意精度)算术库。它是跨平台的事实是一个加号。在 MSVC++ 2010 上编译很容易,您只需要确保打开 README.TXT(下载附带)并阅读文档,(在列表中被悄悄列为第 3 次下载,但实际上相当不错)。
它基于GMP并取代了NTL,因为它没有得到维护,所以几乎应该被放弃。
MPIR 为大量CPU 构建和汇编代码,包括大量的 Intel 和 AMD 芯片。
我在构建过程中遇到的一个问题(在两台不同的机器上!)是 CPU 类型没有正确识别。在一台机器上我有一个“k102”处理器(可以被认为是“k10”),而在另一台机器上我有一个“westmere”(可以被认为是“nehalem”)。无论如何,修复是浏览 CONFIGURATION.BAT并查找您的 CPU 类型。当您调用“configure.bat”时,请使用如下行:
configure --cpu-k10
如果你知道你有一个 AMD k10 兼容的 CPU。这发生在 AMD 1090T 处理器上。
MPIR 可以使用 Visual Studio 2017 进行编译。
Brian Gladman 维护了一个与 Visual Studio 完美构建的 MPIR 分支: 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 中轻松编译。