提问人:ZeroTwo 提问时间:10/20/2023 更新时间:10/20/2023 访问量:59
如何确保 gfortran 和 ifort 编译器的精度相同?对于复杂函数,要具体 [重复]
How to ensure same precision from gfortran and ifort compiler? For complex functions, to be specific [duplicate]
问:
我正在使用以下代码(文件名cf.f90)在输出文件中写入一些复杂函数的值。我从 gfortran 和 ifort 编译器获得不同的输出(我使用 和gfortran -O3 -o cf.exe cf.f90
ifort -O3 cf.f90 -o cf.exe
)
program complex_func
IMPLICIT NONE
integer, parameter :: dp = selected_real_kind(15, 307)
Real(dp) x
complex(dp) CF
x = 0.7
call complex_example(x, CF)
end program complex_func
Subroutine complex_example(y, my_CF)
Implicit None
integer, parameter :: dp = selected_real_kind(15, 307)
Real(dp) y
Complex(dp) my_CF, my_CF2, val(3), sumval(3)
complex(dp), parameter :: I = (0.0_dp, 1.0_dp) ! sqrt(-1)
my_CF = (I+1) * exp(I*y) / y
val = [my_CF, my_CF, (0.0_dp, 0.0_dp)]
write(*,*) 'adding complex array :'
sumval = val + val
write(*,*) sumval
return
end Subroutine complex_example
gfortran 的输出是
adding complex array :
(0.34464148256663812,4.0258854202296295) (0.34464148256663812,4.0258854202296295) (0.0000000000000000,0.0000000000000000)
而从 Ifort 是
adding complex array :
(0.344641482566638,4.02588542022963) (0.344641482566638,4.02588542022963) (0.0000000000000000,0.0000000000000000)
从 gfortran 开始,它是 16 位十进制数字,从 ifort 开始,我得到的是第 14 位数字。如何确保我从 ifort 获得相同的精度?
额外信息:我在更大的代码中使用了复杂的函数,我从 gfortran 而不是 ifort 的代码中获得了预期的结果。
答: 暂无答案
评论
(1.00, 0.00)