亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Fortran 90類參數

Fortran 90類參數

慕后森 2019-06-17 16:12:14
Fortran 90類參數我很難理解90年代的Fortran。kind參數。據我所知,它不確定變量的精度(即浮點數或雙精度),也不確定變量的類型。那么,它決定了什么,到底是為了什么呢?
查看完整描述

3 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

只是擴展了另一個(非常好的)答案,特別是潘伊科夫答:

變量的類型是一個整數標簽,它告訴編譯器它應該使用哪些受支持的類型。

一點兒沒錯。盡管如此,數值內蘊類型時,類別參數用于指定“處理器上數字的表示和行為模型“(標準第16.5節中的單詞),實際上是指它們的位模型,這并不是唯一種參數可以表示的東西。

類型的一種參數是任何變化它的性質,模型或行為是程序員可以在編譯時選擇的。例如,對于內部字符類型,種類參數表示處理器上可獲得的字符集(ASCII,UCS-4,.)。

您甚至可以在定義的派生類型上定義自己的模型/行為變體(自Fortran 2003之后)。您可以創建一個Transform矩陣類型,并為2D空間(其中底層數組為3x3)和3D空間(具有4x4底層數組)擁有一個為FORY=2的版本(在該版本中底層數組為3x3)。請記住,對于非內在類型,沒有自動的種類轉換。


查看完整回答
反對 回復 2019-06-17
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

變量的類型是一個整數標簽,它告訴編譯器它應該使用哪些受支持的類型。

小心,盡管它是共同若要使種類參數與存儲在該類型變量中的字節數相同,則為不需要按照Fortran的標準。

也就是說,在很多系統上,

REAl(KIND=4) :: xs   ! 4 byte ieee float
REAl(KIND=8) :: xd   ! 8 byte ieee float
REAl(KIND=16) :: xq   ! 16 byte ieee float

但是,可能會有編譯器,例如:

REAL(KIND=1) :: XS   ! 4 BYTE FLOAT
REAL(KIND=2) :: XD   ! 8 BYTE FLOAT
REAL(KIND=3) :: XQ   ! 16 BYTE FLOAT

類似于整數和邏輯類型。

(如果我去挖,我可能會找到例子。搜索Usenet組comp.lang.fortrankind去找例子。關于Fortran的最有見地的討論發生在那里,一些非常有經驗的人做出了貢獻。)

因此,如果不能指望特定類型的值在不同的平臺上給出相同的數據表示,您會做什么?這就是內在的功能SELECTED_REAL_KINDSELECTED_INT_KIND都是為了。基本上,你告訴函數你需要表示什么樣的數字,它會返回你需要使用的那種數字。

我通常使用這些類型,因為它們通常給我4字節和8字節的reals:

!--! specific precisions, usually same as real and double precision
integer, parameter :: r6 = selected_real_kind(6) 
integer, parameter :: r15 = selected_real_kind(15)

因此,我可能隨后將一個變量聲明為:

real(kind=r15) :: xd

請注意,這可能會導致使用混合語言程序的問題,您需要絕對指定變量占用的字節數。如果您需要確保,有一些查詢本質可以告訴您每種類型,從中可以推斷出變量的內存占用、其精度、指數范圍等?;蛘撸梢曰謴偷椒菢藴实R姷臓顟B。real*4real*8等聲明風格。

當您從一個新編譯器開始時,值得查看編譯器特定種類的值,以便您知道您正在處理的是什么。搜索網絡kindfinder.f90對于一個方便的程序,它將告訴您編譯器可用的類型。


查看完整回答
反對 回復 2019-06-17
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

我建議使用Fortran 2008及以后;INT8, INT16, INT32, INT64, REAL32, REAL64, REAL128..這是通過調用ISO_FORTRAN_ENV在Fortran 2003及以后。類參數提供了不一致的方法,以確保始終獲得適當的位表示數。


查看完整回答
反對 回復 2019-06-17
  • 3 回答
  • 0 關注
  • 826 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號