【发布时间】:2015-01-30 16:00:41
【问题描述】:
我有一个场景,我希望编译器将浮点值舍入为零或负无穷大。它只需要通过编译器选项来完成,我无法找到任何与此相关的编译器选项,因为类似的方法可用于 AIX 平台的 xlf 编译器。
有没有办法在 Linux 中使用 ifort 编译器做到这一点?
【问题讨论】:
标签: linux floating-point fortran rounding intel-fortran
我有一个场景,我希望编译器将浮点值舍入为零或负无穷大。它只需要通过编译器选项来完成,我无法找到任何与此相关的编译器选项,因为类似的方法可用于 AIX 平台的 xlf 编译器。
有没有办法在 Linux 中使用 ifort 编译器做到这一点?
【问题讨论】:
标签: linux floating-point fortran rounding intel-fortran
英特尔 FORTRAN 编译器的浮点选项在here 中列出。我没有看到任何控制舍入模式的选项。
【讨论】:
我不知道是否存在负无穷大标志,但 flush to zero 标志 -ftz 似乎是您想要的一半。一个简单的测试如下:
program testftz
implicit none
real :: x
integer :: i
x = 1.0
do i=1,50
print *,i,x
x = x/10.0
enddo
end program testftz
编译这个没有 -ftz 在第 46 步给出一个小的 1.4012985e-45 值,然后将其降至零。 用 -ftz 编译它会在第 38 步得到一个小的 9.999999e-38 值,然后下降到零。
【讨论】: