Fortran 中的特定双精度函数有用吗?

2023-11-24

我注意到使用 gfortrantan函数返回与其参数相同类型的实值;例如一个人可以通过real(kind=4), real(kind=8) or real(kind=16)并得到结果real(kind=4), real(kind=8) or real(kind=16)分别。

双精度函数如dtan另一方面,则不那么灵活。如果默认的双精度类型是 8[1] 他们只接受并返回real(kind=8)如果默认种类是 16[2],它们只接受并返回real(kind=16) .

这些是已定义的行为吗?如果是,双精度函数的用例是什么,或者它们是否已过时?


[1] 如果编译为-fdefault-double-8或没有-fdefault-real-8

[2] 如果编译为-fdefault-real-8并且没有-fdefault-double-8


具体的精度函数如dtan自 FORTRAN 77 起实际上就没有必要了。long过去。有些人仍在使用它们,但应尽可能少地使用它们(我想说永远不要使用)。 FORTRAN 77 带来了通用的内在函数,这就是通常应该使用的。您只需确保检查参数的类型即可。随着d...如果参数不是双精度,编译器会抱怨函数。

但它们在 Fortran 2008 中是完全有效的。 Fortran 2018 中它们的过时性发生了一些变化,但我不确定到底是什么。 然而,在 Fortran 2018 中,它们被宣布为过时(另请参阅 Steve 的评论) 。我认为也不可能将它们作为过程参数传递给其他过程。

最后一点,real(kind=4), real(kind=8) or real(kind=16)不是可移植的符号。种类数字4, 8 and 16根本不必存在,或者在不同的编译器中可能有不同的含义。种类数不是字节数。事实上,某些编译器使用种类数字1, 2 and 3. See Fortran 90 类参数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fortran 中的特定双精度函数有用吗? 的相关文章

  • 如何指定 set precision 舍入

    当流到 std 输出时 我可以指定 set precision 对双精度值进行舍入吗 ofile lt lt std setprecision 12 lt lt total run time TIME lt lt n Output 0 75
  • 指针的 Fortran 副本

    我有一个包含指针 p 的 var 类型 我需要将 var 复制到与 var 类型相同的另一个变量 var1 上 通过执行 var1 var 在引号中 因为我不知道这是否是正确的方法 请参见下文 在我的实现中 var 和 var1 被传递给一
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 为什么多次相加0.1仍然无损?

    我知道0 1十进制数不能用有限的二进制数精确表示 解释 http www exploringbinary com why 0 point 1 does not exist in floating point so double n 0 1会
  • iOS5 Xcode4.2浮点字节对齐错误?

    看这段代码 这是具有 1 字节结构包装的结构定义文件 用于套接字网络 pragma pack 1 typedef struct TestStruct1 double d1 double d2 TestStruct1 typedef stru
  • GLSL 中统一浮点行为和常量浮点行为的不同

    我正在尝试在 GLSL 中实现模拟双精度 并且观察到一种奇怪的行为差异 导致 GLSL 中出现细微的浮点错误 考虑以下片段着色器 写入 4 浮点纹理以打印输出 layout location 0 out vec4 Output unifor
  • 这些双精度值如何精确到小数点后 20 位?

    当精度是一个问题时 我正在测试一些非常简单的等价错误 并希望以扩展双精度执行操作 这样我就知道答案在 19位数字中 然后以双精度执行相同的操作 其中第 16 位会有舍入误差 但不知何故 我的双精度算术保持了 19 位精度 当我在扩展双精度中
  • 在 fortran 子例程中包含 c/c++ 头文件

    我有一个用 C C 编写的库 其开发人员声明该库具有 Fortran 接口 该接口将被启用 包括头文件 h 并调用经典子例程 我想编译我的 Fortran 程序并链接该库 该库已经过测试并且可以工作 这是主程序 Main program I
  • 带有过程参数的通用类型绑定过程

    我正在尝试编写一个通用的类型绑定过程 它将不同的回调函数作为参数 当编译以下代码 使用 ifort 12 1 3 时 我收到以下警告 module test type a type contains procedure t s gt at
  • 最Pythonic的方式来打印*最多*一些小数位[重复]

    这个问题在这里已经有答案了 我想格式化浮点数列表 最多保留 2 位小数 但是 我不需要尾随零 也不想要尾随小数点 所以 举例来说 4 001 gt 4 4 797 gt 4 8 8 992 gt 8 99 13 577 gt 13 58 T
  • 如何在fortran 90中生成[0,5]范围内的整数随机数?

    我对 Fortran 编程有点陌生 任何人都可以帮我解决问题吗 我在生成整数随机数时遇到问题 在 Fortran 随机数范围 0 5 中使用 random seed 和 rand 为了支持answer https stackoverflow
  • 来自 double 的 static_cast 可以优化分配给 double 吗?

    我偶然发现了一个我认为不必要的功能 并且通常让我感到害怕 float coerceToFloat double x volatile float y static cast
  • PHP 中的舍入

    a 0 1 0 7 10 int 0 1 0 7 10 PHP 返回 false 有人能给我解释一下 为什么会发生这种情况吗 第一个返回 8 第二个返回 7 引用PHP 浮点精度手册中的大红色警告 http de3 php net manu
  • 分发编译后的 fortran 库和模块文件

    我有一个Fortran使用很多模块的库 我用ifortWindows 上的编译器 因此 我得到一个 lib图书馆的文件和 mod所用模块的文件 这有一个缺点 我还必须分发 mod文件 如果我想在另一个程序中使用编译的库 如何防止这种情况发生
  • 在 VSCode Fortran 调试中检查从另一个模块导入的变量

    我正在调试一些包含许多 Fortran 模块的代码 其中一些模块彼此共享变量 不幸的是 带有 VScode 的 gdb 在调试时似乎无法检查导入的变量 目前 当我需要检查导入的变量时 唯一的方法是停止调试 并手动更改代码以包含等于导入变量的
  • ARM、VFP、浮点、惰性上下文切换

    我正在为 ARM 处理器 Cortex A9 编写操作系统 我正在尝试实现浮点寄存器的延迟上下文切换 这背后的想法是 浮点扩展最初对线程禁用 因此不需要在任务切换上保存浮点上下文 当线程尝试使用浮点指令时 会触发异常 然后 操作系统启用浮点
  • HUGE_VALF 和 INFINITY 常量之间的区别

    在 OpenCL 中 有两个代表无穷大的浮点数学常数 其中之一很简单INFINITY 另一个 HUGE VALF 求值为 无穷大 这两者有什么区别 求值至 无穷大是什么意思 HUGE VALF是一个旧名称 允许不支持无穷大的浮点系统 例如
  • Kotlin 中 Float 和 Double 类型的最小值和最大值

    找出确切的内容很简单min and max值Int and LongKotlin 中的整数 有符号 32 位整数 Int MIN VALUE 2147483648 Int MAX VALUE 2147483647 有符号 64 位整数 Lo
  • OpenMP 与浮点范围并行

    我有以下程序 int main double sum 0 pragma omp parallel for reduction sum for double x 0 x lt 10 x 0 1 sum x x 当我编译它时 我收到错误inva
  • 对于 IEEE754 NaN 值,所有比较都返回 false 的基本原理是什么?

    为什么 NaN 值的比较行为与所有其他值不同 也就是说 与运算符 进行的所有比较 其中一个或两个值为 NaN 都会返回 false 这与所有其他值的行为相反 我想这在某种程度上简化了数值计算 但我找不到明确说明的原因 即使在关于 IEEE

随机推荐

  • 在存档中安装 R 包

    如何在 Windows 中安装存档的软件包 http cran r project org src contrib Archive 当我尝试安装从存档下载的 tar gz 时 出现以下错误 Error in gzfile file r ca
  • Firestore 安全规则中的递归通配符未按预期工作

    我有一个像这样的数据结构 收藏 and 文件而不是JSON当然 但你明白了 users user1 name Alice groups groupA subbed true groupB subbed true user2 name Bob
  • Valums 文件上传器在 Internet Explorer 9 下不起作用

    Values 文件上传器 现在称为精美上传者 在 Internet Explorer 9 下不起作用 但在 Chrome 下工作得很好 因此 在 IE 下 它会显示文件名和取消按钮 并且不会显示上传百分比 有什么线索吗 更新 解决方案也在这
  • 从网络中的另一台机器 Ping Docker 容器

    我创建了一个 docker 容器 并尝试在容器的 bash 中 ping www google com 并且它有效 我还尝试从主机 ping 容器 它工作得很好 但是 当我尝试从网络中的外部系统 ping 容器时 它给了我一个请求超时异常
  • CakePHP 从数据库中查询最近的纬度经度

    在 CakePHP v3 应用程序中 如何根据传递的 lat lng 值检索最接近的结果 我想让它们恢复为原生 CakePHP 实体 所以像这样 public function closest lat lng sightings recor
  • 我应该将时区与 Postgres 和 JDBC 的时间戳分开存储吗?

    看起来 也许我是错的 如果你想保留 JDBC 和 Postgres 发生问题时的时区 你需要将时区与时间戳分开存储 也就是说我更愿意给我的 ORM JDBC JPA 一个 JavaCalendar 或乔达DataTime 与说时区Ameri
  • 动态创建的文本框的 JavaScript 验证

    在表单中 通过单击 添加 按钮动态创建文本框 以便在新行中创建文本框 现在我的问题是动态创建的文本框的验证 以便如果有任何文本框 它会显示一条消息单击 提交 按钮提交表单时留空 请帮助我 EDIT
  • Python Plotly - 对齐散点图和条形图的 Y 轴

    我正在尝试使用散点图和图形元素创建一个绘图图 一切都很顺利 但有一个问题 两个 Y 轴没有围绕 0 对齐 我尝试过使用不同的属性 例如 mirror 和tick0 我也尝试遵循plotly网站上的示例 但它主要是具有相同图形类型的多个y轴
  • 在数据重新加载时保存 WPF TreeView 状态

    我正在使用 TreeView 在 UI 中显示我的数据 现在 我的应用程序每 5 秒刷新一次 以便显示最新的数据 有没有办法即使在窗口重新加载后也可以保存树视图的展开状态或折叠状态 因为如果我有大量数据并且需要超过 5 秒才能转到所需数据
  • 如何在 Blazor 组件上进行双向绑定

    我想创建自定义输入 所以我创建了这个组件 MyInputComponent razor div div
  • jquery历史记录插件

    我正在使用这个插件 http plugins jquery com project history 在本页面 http www crtaci info index php autocom majice 我不知道为什么 但似乎我不知道该怎么做
  • 如何关闭额外的日志记录?

    我有一个使用 Spring 和 CXF 的 Java 服务 该代码来自以前的开发人员 我正在提供维护 但我在日志中看到了这一点 Apr 16 2013 1 44 11 PM org apache cxf interceptor Abstra
  • 如何让 Winston 使用 Webpack?

    我有一个使用 Node js 的电子应用程序 我想使用 Winston 登录应用程序 我已将winston 添加到我的package json 文件中 但是当我运行webpack 的构建命令时 我收到了winston 中colors js
  • 使用 ctypes 模块从 python 调用的共享库捕获打印输出

    我正在使用一个通过 ctypes 模块调用的共享库 我想将与此模块关联的标准输出重定向到我可以在程序中访问的变量或文件 然而 ctypes 使用与 sys stdout 不同的标准输出 我将演示我在使用 libc 时遇到的问题 如果有人复制
  • 如何检查日期时间是否在中午之前

    我在 python 中有一个日期时间对象 我想创建一个函数来检查输入是在日期时间当天的上午还是下午 即中午 12 点之前或之后 如何手动创建时间12 00我可以为此使用大于或小于符号吗 lt gt 致电datetime datetime t
  • 在 SQL Server 中迭代 XML 变量

    我在存储过程 SQL Server 2008 中有一个 XML 变量 其示例值为
  • Android 4.0 (API 14+) 中 Activity 之间的默认转换是什么

    我构建了一个包含相当多活动的应用程序 我希望在它们之间实现 进入时从右滑动 退出时从左滑动 转换 我不止一次地读到幻灯片过渡应该是 Android 默认设置 但在我正在开发的设备上 过渡默认是淡入 淡出 Galaxy Tab 2 7 在 I
  • 对 OpenSSL 非阻塞 I/O 感到困惑

    一般来说 OpenSSL 库 C API 似乎提供了两种方法来做所有事情 您可以使用根据您的喜好配置的普通系统套接字 或者您可以使用 OpenSSLBIO有点像流的对象 然而 我经常对一些重复的功能感到困惑 例如 如何使 SSL 连接非阻塞
  • WCF .NET Core - WsHttpBinding 配置project.json

    如何使用 NET core配置wsHttpBinding 我应该在Project json文件中配置吗 在 NET Core之前的配置如下
  • Fortran 中的特定双精度函数有用吗?

    我注意到使用 gfortrantan函数返回与其参数相同类型的实值 例如一个人可以通过real kind 4 real kind 8 or real kind 16 并得到结果real kind 4 real kind 8 or real