问题标签 [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.
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
来创建我自己的字符串函数。
c++ - G++ 4.6.3 Linux 中使用 quadmath 的四倍精度
我试图执行代码
用这个命令
但我得到了错误:
版本是:
我该如何解决这个问题?
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.
gcc - long double subnormals/denormals 被截断为 0 [-Woverflow]
在标准中,使用四精度浮点格式IEEE754
的最小严格正(次正规)值是 2 −16493 ≈ 10 −4965 。为什么 GCC 拒绝任何低于 10 -4949 的东西?我正在寻找对可能发生的不同事情的解释,这些事情将限制确定为 10 -4949而不是 10 -4965。
我正在在线使用 GNU GCC 4.8.1 版- 不确定它在哪个架构上运行(我意识到这可能是罪魁祸首)。请随时发布您对不同架构的发现。
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
。这种时间差异是否正常,如果不是,我该如何解决?
编码:
编译说明:
fortran - 取平方根到四倍精度
我怎样才能做一个平方根Real(Real128)
?
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 优化对四倍精度计算的影响如此微弱?也许我应该使用其他编译器标志或包含其他库?
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*16
或real(real128)
不同。
此外,假设MPI_REAL16
实际上real(real128)
并尝试在程序中使用它会导致不同的问题:
这不会发生real*16
。(忽略一个应该能够通过任何位模式,所以这个检查是多余的)
使用 16 字节实数的正确方法是什么?OpenMPI 库是否出错?
c - 如何将 __float128 数据类型写入二进制文件?
我正在使用 quadmath 库进行四精度。我可以使用 fwrite 函数写入二进制文件吗?
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
)