0

每个人

我有一个Fortran90程序,变量是双精度或复数*16,现在我必须编写另一个程序,其变量是实数或复数,其他的都和原来的程序一样。

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

谢谢

4

1 回答 1

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

于 2013-03-15T09:39:02.700 回答