[英]The minimum and maximum floating point exponent of a real number
如何獲得32位和64位實數的最小和最大指數? 我正在做一些工作來避免下溢和溢出,並且需要知道這些數字。
我還需要浮點數的基礎。
在fortran中是否有可能獲得ilmach
的等效ilmach
?
函數range()
返回指數范圍。 內在函數huge()
返回給定數值類型的最大允許數。 由此,您也可以通過使用對數來查看指數。 另請參見selected_real_kind()
。
gfortran和其他普通編譯器的基礎是2,但是您可以使用radix()
對其進行測試。 他們將來可能會以10為基數。
在我鏈接的同一本手冊中,您會發現其他有用的內在函數,例如tiny(), precision(), epsilon(), spacing()
,您可以按照“另請參見:”中的鏈接進行操作。
對於非零實數,數字模型看起來像s*b^e*\\sum_{k=1}^{p}f_k*b^{-k}
。
要獲取基數b
的值,請使用radix()
。 指數e
的最小和最大值可以通過將exponent
與tiny
和huge
相結合來找到。
use, intrinsic :: iso_fortran_env, only : real32, real64
print 1, "real32", RADIX(1._real32), EXPONENT(TINY(1._real32)), EXPONENT(HUGE(1._real32))
print 1, "real64", RADIX(1._real64), EXPONENT(TINY(1._real64)), EXPONENT(HUGE(1._real64))
1 FORMAT (A," has radix ", I0, " with exponent range ", I0, " to ", I0, ".")
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.