Fortran编译器选项,用于警告将单精度常数分配给双精度变量

时间:2019-10-14 23:19:37

标签: fortran gfortran intel-fortran

gfortran和ifort中是否有编译选项会警告我是否将单精度数字分配给双精度变量?即当我这样做时:

real(dp) :: number
number = 1.23 ! <---- I want to get compilation warning here

示例

program precision

 ! Double precision type
integer, parameter :: dp = selected_real_kind(p = 15, r = 307)

real(dp) :: number

number = 1.3
print *, 'Garbage: ', number
! Prints 1.2999999523162842
! with nonsence digits after 7th decimal

number = 1.3_dp
print *, 'Legit: ', number
! Prints 1.3000000000000000
! with all digits we want

end program

我想在上述代码中收到number = 1.3分配的警告。这是一个容易犯的错误,弄乱了我的计算精度。

注意

我知道gfortran的编译选项-fdefault-double-8 -fdefault-real-8和ifort的-r8神奇地使所有单精度常量变为双精度。这不是我想要的。

0 个答案:

没有答案