大家
我有一个Fortran90程序,变量是双精度或复数* 16,现在我必须编写另一个程序,其变量是实数或复数,所有其他的东西都与原始程序相同。
直截了当的方法是重写每个声明,但我想知道是否有其他更简单的方法来实现这一点,我使用gfortran作为编译器。
由于
答案 0 :(得分:2)
可能最干净(尽管不是最简单)的方法是重写程序以使变量具有可调整的精度:
program test
implicit none
integer, parameter :: rp = kind(1.0d0)
real(rp) :: myreal
complex(rp) :: mycomplex
通过将参数rp
(实际精度)设置为kind(1.0)
而不是kind(1.0d0)
,您可以从双切换为单。或者,使用fortran 2003兼容编译器,您也可以在调用real64
模块后使用名称real32
和iso_fortan_env
。 (更新:它需要一个fortran 2008兼容的编译器,而不是fortran 2003,请参阅IanH的评论)。