2013-11-26 109 views
1

我有一個場景,我希望編譯器將浮點值向零或向負無窮大取整。它只需要通過編譯器選項來完成,而且我無法找到任何關於此的編譯器選項,因爲類似的方法可用於AIX平臺的xlf編譯器。是否可以使舍入爲零或四捨五入爲無窮大?

有什麼辦法可以在Linux下使用ifort編譯器來做到這一點?

回答

1

英特爾FORTRAN編譯器的浮點選項列表爲here。我沒有看到任何控制舍入模式的選項。

-1

我不知道是否存在負無窮大標誌,但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,然後降到零。

+2

刷新爲零是某些處理器中的一個「特徵」(缺陷),它們將低於正常值的值更改爲零,以補償它們爲了正確處理低於正常值而提供的低劣性能。此功能不會影響不涉及低於正常值的操作中的舍入,並且完全不是問題所要求的。 –