我注意到使用 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(使用前将#替换为@)