gpt4 book ai didi

floating-point - Fortran 中特定的 double 函数有用吗?

转载 作者:行者123 更新时间:2023-12-05 00:47:56 24 4
gpt4 key购买 nike

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

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

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

[1] 如果使用 -fdefault-double-8 编译或没有 -fdefault-real-8
[2] 如果使用 -fdefault-real-8 编译并且没有 -fdefault-double-8

最佳答案

具体精度函数如dtan自 FORTRAN 77 以来实际上是不必要的。那是 过去。有些人仍在使用它们,但应该尽可能少地使用它们(我会说永远不会)。 FORTRAN 77 带来了通用的内在函数,这是通常应该使用的。你只需要确保检查参数的类型。与 d...如果参数不是 double ,编译器会提示的函数。

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

最后一点,real(kind=4), real(kind=8) or real(kind=16)不是可移植符号。种类编号 4, 8 and 16根本不必存在,或者在各种编译器中可能意味着不同的东西。种类编号不是字节数。确实某些编译器使用种类编号 1, 2 and 3 .见 Fortran 90 kind parameter

关于floating-point - Fortran 中特定的 double 函数有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50588211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com