2012-04-16 73 views

回答

3

是的,這已經放寬。在Fortran 2003中,您甚至可以使用內部函數,如sinexp

0

我的猜測是整數指數有一個簡單的實現,編譯器可以調用替換值作爲預編譯的一步。然而,非整數指數(和負指數)的值可能無法評估爲實數;問題的關鍵不在於這個例子是不可估量的,只是編譯器需要可預測性,並且僅僅使這些表達式失敗就比寫一個可以確定給定表達式是否將評估爲合理數字的例程更簡單。請記住,這是在編譯之前完成的,而不是通過編譯表達式,運行它並使用該值,因此範圍不像一般fortran那樣寬。

如果這是你的問題,然後再考慮宏和F90/F77,而不是F90/F77的文件,所以編譯器知道運行預處理器。

或者只計算您的計算器16DP的價值和使用。

還是讓它成爲一個正常的變量,而不是一個參數。成本將是最小的。

+1

無法整數指數未能評估呢? (例如10 ** 50000可能會導致溢出)。預先計算該值是一個選項,但這使得難以理解參數值的來源。讓它成爲一個普通變量是可以的,但如果我想將它包含在其他地方呢?最後,使用預處理器在固定格式設置中是危險的,因爲CPP不知道如何將行包裝成編譯器行爲,當它發現第72列未定義好的東西時。 – mgilson 2012-04-16 12:47:08