问题标签 [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.
fortran - 四倍与双精度的 CPU 时间
我正在做一些长期模拟,试图在 ODE 系统的解决方案中实现尽可能高的精度。我试图找出四倍(128 位)精度计算与双倍(64 位)精度相比需要多少时间。我在谷歌上搜索了一下,看到了一些关于它的意见:有人说需要 4 倍的时间,其他人说需要 60-70 倍......所以我决定自己动手,我写了一个简单的 Fortran 基准程序:
使用 编译后的典型运行结果gfortran 4.8.4
,没有任何优化标志:
这里一定发生了什么事。我的猜测是,它sqrt
是gfortran
通过优化算法计算的,而四倍精度计算可能还没有实现。和可能不是这种情况sin
,cos
但是为什么基本运算在四倍精度上慢了 7.6 倍,而对于三角函数,速度只慢了 2 倍?如果用于三角函数的算法对于四精度和双精度是相同的,我希望它们的 CPU 时间也会增加七倍。
与 64 位相比,使用 128 位精度时科学计算的平均速度下降多少?
我在 Intel i7-4771 @ 3.50GHz 上运行它。
c++ - Linux 与 Mac 上的四倍精度
我编写了一个多维数值积分代码,它能够在 Linux 中以双精度、长双精度或四倍精度运行。所有模式都可以完美地编译和工作,但是当我尝试在 Mac 上为四倍精度案例编译相同的代码时,我最终会遇到错误,我不确定它们的含义。
我正在用 g++ 编译,但我尝试了其他编译器(我确实尝试过 clang 只是为了看看它会做什么,但据我所知,它不能支持四倍精度?如果我错了,请纠正我)。
我链接了相关的库和头文件(包括 quadmath.h 头文件),我最终得到了来自 quadmath.h 的这些错误:
__float128 错误也会重新出现在各种数学运算中,例如 acosq、asinq 等...
我以前从未遇到过不受支持的机器模式错误。我看过 GNU 编译器说明GNU 编译器说明和GNU 浮动类型。
很难为人们编译和测试制作一个最小的工作示例,所以我只是试图跟踪错误以找出问题所在,但我不确定现阶段该做什么。鉴于这些错误消息,下一步将是什么?关于 Linux 与 Mac,我有什么遗漏吗?我一直在 Linux 中编码,所以对后者不熟悉,而且似乎在 Mac 上进行四倍精度计算的方法与我习惯的方法不同。
谢谢您的帮助
-雪人
floating-point - 运行 64 位计算机的 128 位 Fortran 计算
我有一个 64 位的 linux 系统。我使用 gfortran 编译并运行我的 Fortran 代码,这会将一些数字输出为双精度,即 ~ 16 位小数。例如
如果我现在使用标志-fdefault-real-8进行编译,则 Fortran 双精度类型将提升为 16 字节 = 128 位并输出一些数字,但精度更高 ~ 33 位小数。例如
我的问题是:如果我的计算机只有 64 位,这个计算怎么能做到如此高精度?
windows - 使用 Mingw(Anaconda 版本)在 Fortran 中使用四倍精度的奇怪行为
- 视窗 7 64 位
- GNU Fortran (GCC) 4.7.0 20111220 (experimental) --> 使用 Anaconda3/Miniconda3 64 位安装的 MinGW 版本。
大家好,
我正在尝试编译一些 Fortran 代码,以便使用 F2Py 从 Python 中使用。完整的项目是Solcore,以防有人感兴趣。在 Linux 和 MacOS 中一切正常,问题出现在 Windows 上。经过一番努力,我将问题归结为我的 Fortran 代码的四倍精度变量,这些变量没有得到正确处理。
一个在 Linux/MacOS 中运行良好但在 Windows 中运行良好但在 Windows 中运行良好的最小示例是:
在 Linux/MacOS 中,这会按预期打印:
但是,在 Windows 中,我得到:
撇开科学记数法不谈,显然这不是我所期望的。每当我尝试使用四倍精度变量进行操作时,都会出现相同的结果,但我无法找到方法。
这与 Fortran 中的四倍精度变量和 Anaconda 中包含的 MinGW 版本已经指出的错误不同。
任何建议都将受到欢迎。请记住,最终我需要使用 F2Py 来完成这项工作,而 Anaconda 中包含的 MinGW 是我在阅读了许多说明和教程后最终找到使其工作的唯一方法。因此,如果可能的话,我宁愿坚持下去。
非常感谢,
迭戈
c++ - Intel C++ 编译器 18.0 update 3 in vs 2017 上的四倍精度浮点支持
我只是尝试boost::multiprecision::float128
使用英特尔 C++ 编译器 18.0 更新 3 在 Visual Studio 2017 中编译支持的 C++ 程序。
我/Qoption,cpp,--extended_float_type
向项目 C/C++ 添加了附加选项。
但是,ICC 会发出E0020: identifier "_Quad" is undefined
错误消息。
我搜索了与四倍精度浮点数和 _Quad 主题相关的最新 ICC 18 开发人员指南和参考,但找不到任何内容。
ICC 18 中是否_Quad
仍支持关键字,或者我在编译器选项中犯了错误?谢谢。
- 操作系统:Windows 10 x64 1803
- 视觉工作室 2017 15.7.3
- 英特尔 C++ 编译器 18.0 更新 3
fortran - FFTW3 无法识别四倍精度的 MPICH 库?
我正在将涉及调用 FFTW3 和 BLAS-LAPACK 包的并行双精度 fortran 代码转换为并行四倍精度。
我已经为四倍精度安装了 FFTW3,如下所示:
描述于: http: //fftw.org/fftw3_doc/Installation-on-Unix.html#Installation-on-Unix
调用这些库的示例串行代码可以正常工作。我在这里链接到 lquadmath,它告诉我串行编译器 gfortran 有那个库。
但是,要使用并行库安装 FFTW3 需要另一个标签
当我尝试这个时出现错误:
以下是我的 mpich-3.2.1 安装脚本:
我尝试了使用 REAL16 数据类型(https://www.mpi-forum.org/docs/mpi-2.1/mpi21-report-bw/node330.htm)的 mpigather 和 mpiscatter 测试来分散 pi 的倍数,它工作正常。
但是,FFTW3 无法识别这一点。我该如何进行?感谢您的时间。
c - 在 c 程序中将默认的实类型设置为 16 字节
使用 gfortran 编译器,标志 -fdefault-real-16 有助于将默认实类型设置为 16 字节宽的类型。例如
何时遵守
结果看起来像
当编译为
结果看起来像
所以,我尝试对 c 程序做同样的事情
问题是:即使c程序编译时带有-m64标志,例如
它给出了相同的结果
问题是:是否有一些方法可以告诉 gcc 将“double”编译为“long double”?
matlab - MATLAB中的双精度和四精度
我想将数据(双精度,15 个小数点)转换为另一种类型的数据(四精度,34 个小数点)。所以,我使用vpa
了这样的功能:
但是,结果的类型是sym
, not double
。当我检查sym
类型数据的每个单元格时,1x1 sym
在每个单元格中都创建了。我尝试fft
使用 'quad_data' 来使用函数,但它不起作用。有什么解决方案可以将双精度类型的小数点从 15 更改为 34?