现代相当于DCMPLX?

时间:2014-11-25 14:58:07

标签: fortran

使用众所周知的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。是否有一种现代的交叉编译方式来操纵双精度复数?

2 个答案:

答案 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部分中定义。