使用众所周知的DCMPLX
内在函数,gfortran -g -std=f2008 -Wall -Wextra -O2
返回Warning: The intrinsic 'dcmplx' at (1) is not included in the selected standard but a GNU Fortran extension and 'dcmplx' will be treated as if declared EXTERNAL. Use an appropriate -std=* option or define -fall-intrinsics to allow this intrinsic
。是否有一种现代的交叉编译方式来操纵双精度复数?
答案 0 :(得分:5)
如果要转换为双精度类型,无论它具有何种类型,请使用
cmplx(real_part, imaginary_part, kind=kind(1.0d0))
通常,您应将种类编号存储在命名常量中。如果您实际上不需要双精度但是需要固定的存储大小,请使用模块iso_fortran_env
中的命名常量,或使用selected_real_kind()
指定精度的旧方法。
答案 1 :(得分:2)
您可以使用:
CMPLX(X, Y, kind=REAL64)
要使用REAL64
,您需要导入模块ISO_FORTRAN_ENV
。
这在Fortran 2008标准(草案)的13.7.36
部分中定义。