Eli*_*iad 4 floating-point fortran gfortran
我注意到使用gfortran tan函数返回与其参数相同类型的实数值; 例如,一个可以传递real(kind=4),real(kind=8)或者real(kind=16)给它并获得结果 real(kind=4),real(kind=8)或real(kind=16)分别.
dtan另一方面,双精度功能并不灵活.如果默认的double类型是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以来,具体的精确功能实际上是不必要的.那是很久以前的事了.有些人仍在使用它们,但应尽可能少地使用它们(我永远不会说).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.请参阅Fortran 90种参数