是否可以强制Fortran编译器使用单精度?

Kil*_*ang 3 precision fortran gfortran

我有一个大型的Fortran代码,其中大多数实变量通过使用声明为具有双精度

double precision
real*8
Run Code Online (Sandbox Code Playgroud)

而且我想知道是否有可能强制编译器对这些变量使用单精度。

jac*_*cob 5

这取决于您使用的编译器。GNU Fortran支持选项-freal-8-real-4,该选项将所有8字节实数转换为4字节实数。例如,以下程序

program p

    use iso_fortran_env, only: real64

    real(kind=real64) :: x
    double precision :: y
    real*8 :: z

    print *, sizeof(x), sizeof(y), sizeof(z)

end program p
Run Code Online (Sandbox Code Playgroud)

版画

                    8                    8                    8
Run Code Online (Sandbox Code Playgroud)

但是使用编译时-freal-8-real-4,输出为

                    4                    4                    4
Run Code Online (Sandbox Code Playgroud)

其他编译器可能具有不同的选项(或没有这样的选项)。