在 Fortran 中使用 CMPLX 函数实现双精度或四精度
Using CMPLX function for double or quad precision in Fortran
这是我的代码:
Program Complex_Double_Quad_Precision
Use, intrinsic :: iso_fortran_env
Implicit none
Integer, parameter :: sp = REAL32
Integer, parameter :: dp = REAL64
Integer, parameter :: qp = REAL128
Real(sp),parameter:: Some_Value_0 = 4.56
Real(dp),parameter:: Some_Value_1 = 4.56
Real(qp),parameter:: Some_Value_2 = 4.56
Complex(sp):: Value_0
Complex(dp):: Value_1
Complex(qp):: Value_2
Value_0 = cmplx( Some_Value_0 , Some_Value_0 )
Value_1 = cmplx( Some_Value_1 , Some_Value_1 )
Value_2 = cmplx( Some_Value_2 , Some_Value_2 )
Write(*,*) Value_0
Write(*,*) Value_1
Write(*,*) Value_2
End Program Complex_Double_Quad_Precision
我的IDE:
代码块 16.01.
我打算学习如何在复杂的计算中使用双精度或四精度。在我的代码中,编译并启动代码后,我收到了这条消息:
Conversion from REAL(8) to default-kind COMPLEX(4) might lose precision, consider using the KIND argument
是否有任何方法可以使用 KIND
参数以及 dp
和 qp
更改 CMPLX
函数结果的精度?
如警告消息所述,您希望使用 CMPLX 的可选第三个参数来指定返回值的类型。参见例如https://gcc.gnu.org/onlinedocs/gfortran/CMPLX.html
或者,在您的代码中:
Value_1 = cmplx( Some_Value_1 , Some_Value_1, dp )
Value_2 = cmplx( Some_Value_2 , Some_Value_2, qp )
这是我的代码:
Program Complex_Double_Quad_Precision
Use, intrinsic :: iso_fortran_env
Implicit none
Integer, parameter :: sp = REAL32
Integer, parameter :: dp = REAL64
Integer, parameter :: qp = REAL128
Real(sp),parameter:: Some_Value_0 = 4.56
Real(dp),parameter:: Some_Value_1 = 4.56
Real(qp),parameter:: Some_Value_2 = 4.56
Complex(sp):: Value_0
Complex(dp):: Value_1
Complex(qp):: Value_2
Value_0 = cmplx( Some_Value_0 , Some_Value_0 )
Value_1 = cmplx( Some_Value_1 , Some_Value_1 )
Value_2 = cmplx( Some_Value_2 , Some_Value_2 )
Write(*,*) Value_0
Write(*,*) Value_1
Write(*,*) Value_2
End Program Complex_Double_Quad_Precision
我的IDE: 代码块 16.01.
我打算学习如何在复杂的计算中使用双精度或四精度。在我的代码中,编译并启动代码后,我收到了这条消息:
Conversion from REAL(8) to default-kind COMPLEX(4) might lose precision, consider using the KIND argument
是否有任何方法可以使用 KIND
参数以及 dp
和 qp
更改 CMPLX
函数结果的精度?
如警告消息所述,您希望使用 CMPLX 的可选第三个参数来指定返回值的类型。参见例如https://gcc.gnu.org/onlinedocs/gfortran/CMPLX.html
或者,在您的代码中:
Value_1 = cmplx( Some_Value_1 , Some_Value_1, dp )
Value_2 = cmplx( Some_Value_2 , Some_Value_2, qp )