问题标签 [quadruple-precision]

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 投票
2 回答
20109 浏览

c++ - C++ (GCC) 中的四倍精度

就在最近,GCC 4.6.0 与libquadmath一起问世。不幸的是,GNU 支持 Fortran,但不支持 C 或 C++(包含的只是 .so)。我还没有找到在 C++ 中使用这些新功能的方法,但是,GNU C 确实支持__float128保证四倍精度浮点数的类型。GNU C 似乎不支持libquadmath中的数学函数,例如 fabsq(绝对值,q是 quad 的后缀)。

有什么方法可以让这些函数在 C++ 中工作,或者是否有一些替代库可以用于数学函数__float128?在 GCC 中获得四精度浮点数的最佳方法是什么?现在,我可以对它们进行加减乘乘,但这对我来说毫无用处,考虑到我无法将它们转换为字符串或使用诸如truncq和之类的函数fabsq来创建我自己的字符串函数。

0 投票
1 回答
1341 浏览

c++ - G++ 4.6.3 Linux 中使用 quadmath 的四倍精度

我试图执行代码

用这个命令

但我得到了错误:

版本是:

我该如何解决这个问题?

0 投票
2 回答
983 浏览

c - quadmath and argument type for scanf

I use the <quadmath.h>. With which argument type can I read my input correctly? If I use double it looks like:

I tried different possibilities instead of "l" for example:

or even without

however I get an error.

0 投票
2 回答
255 浏览

gcc - long double subnormals/denormals 被截断为 0 [-Woverflow]

在标准中,使用四精度浮点格式IEEE754的最小严格正(次正规)值是 2 −16493 ≈ 10 −4965 。为什么 GCC 拒绝任何低于 10 -4949 的东西?我正在寻找对可能发生的不同事情的解释,这些事情将限制确定为 10 -4949而不是 10 -4965

我正在在线使用 GNU GCC 4.8.1 版- 不确定它在哪个架构上运行(我意识到这可能是罪魁祸首)。请随时发布您对不同架构的发现。

0 投票
1 回答
605 浏览

c++ - 为什么我的 C++ 程序从 long double 切换到 float128 时会这么慢?

我在 Unix 上编程,使用 g++ 4.8.2 编译器。我目前需要将此时使用的 C++ 程序long double(在我的情况下有效位为 64 位)转换为使用该__float128类型的程序(有效位为 113 位)。我使用libquadmath0包和 boost 库来做到这一点,但生成的程序比 with 慢 10~20 倍long double

double这很令人困惑,因为有效数字的大小并没有高很多,而且我在从 切换到时没有观察到这种差异long double。这种时间差异是否正常,如果不是,我该如何解决?

编码:

编译说明:

0 投票
1 回答
760 浏览

fortran - 取平方根到四倍精度

我怎样才能做一个平方根Real(Real128)

0 投票
3 回答
513 浏览

c++ - 为什么优化标志(-O3)不能加快四倍精度计算?

我有一个用 C++ 编写的高精度 ODE(常微分方程)求解器。我使用用户定义的类型进行所有计算real_type。在标头中有一个 typedef 声明了这种类型:

typedef long double real_type;

我决定将 long double 类型更改__float128为更准确。除此之外,我还包含quadmath.h并用 libquadmath 中的函数替换了所有标准数学函数。

如果在没有任何优化标志的情况下构建“long double”版本,则在 77 秒内解决了一些参考 ODE。如果这个版本是用 -O3 标志构建的,同样的 ODE 会在 25 秒内解决。因此 -O3 标志将计算速度提高了三倍。

但是在没有标志的“__float 128”版本中,类似的 ODE 在 190 秒内解决,而 -O3 在 160 秒内解决(大约 15% 的差异)。为什么 -O3 优化对四倍精度计算的影响如此微弱?也许我应该使用其他编译器标志或包含其他库?

0 投票
1 回答
524 浏览

fortran - 16 字节实数的 MPI_AllReduce 的奇怪结果

编译器:gfortran-4.8.5

MPI 库:OpenMPI-1.7.2(预装 OpenSuSE 13.2)

这个程序:

我也试过real(16)real(kind(1.q0))。对于这个编译器,real(real128)实际上是等价的。real*10

结果是:

程序找到真正的最大值以real*10保持MPI_REAL16。MPI 规范(3.1,第 628 和 674 页)不是很清楚是否MPI_REAL16对应real*16real(real128)不同。

此外,假设MPI_REAL16实际上real(real128)并尝试在程序中使用它会导致不同的问题:

这不会发生real*16。(忽略一个应该能够通过任何位模式,所以这个检查是多余的)

使用 16 字节实数的正确方法是什么?OpenMPI 库是否出错?

0 投票
1 回答
114 浏览

c - 如何将 __float128 数据类型写入二进制文件?

我正在使用 quadmath 库进行四精度。我可以使用 fwrite 函数写入二进制文件吗?

0 投票
0 回答
32 浏览

c++ - 在 C++ 中打印四倍精度向量

我正在尝试在 CodeBlocks 中使用 GCC 4.7.1 打印一个四倍精度向量。这是代码:

我得到这个错误:undefined reference to 'quadmath_snprintf(char*, unsigned int, char const*, ...)'。我究竟做错了什么?


关于重复声明,表示为重复的答案确实包含解决方案的一部分,但这是一个包括几个不同问题的一般问题。

在打印四倍精度向量时遇到问题的用户很可能是没有经验的(就像我一样),并且会从更简洁的答案和/或更精确的来源中受益更多。

这里提出的问题可以通过检查来解决:

https://gcc.gnu.org/ml/gcc-help/2011-06/msg00148.html(将标题添加为外部)

什么是未定义的引用/未解决的外部符号错误,我该如何解决?(将相关库链接为libquadmath