如何自动将变量为双精度的Fortran90程序转换为实数?

时间:2013-03-15 09:27:57

标签: fortran gfortran

大家

我有一个Fortran90程序,变量是双精度或复数* 16,现在我必须编写另一个程序,其变量是实数或复数,所有其他的东西都与原始程序相同。

直截了当的方法是重写每个声明,但我想知道是否有其他更简单的方法来实现这一点,我使用gfortran作为编译器。

由于

1 个答案:

答案 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模块后使用名称real32iso_fortan_env。 (更新:它需要一个fortran 2008兼容的编译器,而不是fortran 2003,请参阅IanH的评论)。