Fortran DCMPLX的现代等价物?
使用众所周知的内在函数,Fortran DCMPLX的现代等价物?,fortran,Fortran,使用众所周知的内在函数,gfortran-g-std=f2008-Wall-Wextra-O2返回警告:所选标准中不包括(1)处的内在“dcmplx”,但GNU Fortran扩展和“dcmplx”将被视为声明为外部。使用适当的-std=*选项或define-fall intrinsics来允许此内在。有没有一种处理双精度复数的现代交叉编译器方法?您可以使用: CMPLX(X, Y, kind=REAL64) 要使用REAL64,您需要导入模块ISO\u FORTRAN\u ENV Fortr
gfortran-g-std=f2008-Wall-Wextra-O2
返回警告:所选标准中不包括(1)处的内在“dcmplx”,但GNU Fortran扩展和“dcmplx”将被视为声明为外部。使用适当的-std=*选项或define-fall intrinsics来允许此内在
。有没有一种处理双精度复数的现代交叉编译器方法?您可以使用:
CMPLX(X, Y, kind=REAL64)
要使用REAL64
,您需要导入模块ISO\u FORTRAN\u ENV
Fortran 2008标准(草案)第13.7.36节对其进行了定义。如果要转换为双精度类型,无论其具有何种类型的编号,请使用
cmplx(real_part, imaginary_part, kind=kind(1.0d0))
通常,您应该将种类号存储在命名常量中。如果您实际上不需要双精度,而是需要固定的存储大小,请使用模块
iso\u fortran\u env
中的命名常量,或使用选定的\u real\u kind()指定精度的旧方法否!请不要使用kind=8
!使用ISO\u Fortran\u env
和REAL64
等参数,或类似于selected\u real\u kind()。。。否则,您的代码将无法移植。@AlexanderVogt谢谢您提醒我。。。我的大脑处于快速编码模式。