Fortran內部函式


內部函式為Fortran語言提供一些常見和重要的功能。我們已經討論過陣列,字元和字串一些函式。

內部函式可歸類為:

  • 數值函式
  • 數學函式
  • 數位查詢函式
  • 浮點操作函式
  • 位元運算函式
  • 字元函式
  • 類函式
  • 邏輯函式
  • 陣列函式

我們在陣列章討論的陣列功能。在下面的章節中,提供了與其他類別的所有這些功能的簡要說明。

函式名稱列,

  • A 代表任何型別的數值變數
  • R 代表一個真實的或整型變數
  • X 和 Y 代表實際變數
  • Z 代表複數變數
  • W 表示實數或複數變數

數值函式

Function 描述
ABS (A) 返回A的絕對值
AIMAG (Z) 返回復數Z的虛部
AINT (A [, KIND]) 截斷Z小數部分接近零,返回一個實數。
ANINT (A [, KIND]) 返回一個實數值,最接近的整數或整數。
CEILING (A [, KIND]) 返回比最小整數大於或等於數A.
CMPLX (X [, Y, KIND]) 其轉換實數變數X和Y的一些複數X + iY; 如果Y不存在,則使用0。
CONJG (Z) 返回復數Z的復共軛
DBLE (A) 轉換A成到雙精度實數。
DIM (X, Y) 返回X和Y的正差
DPROD (X, Y) 返回實數 X 和 Y 產生的雙精度
FLOOR (A [, KIND]) 提供了比最大的整數小於或等於數A.
INT (A [, KIND]) 將其轉換為數位(真實或整數)為整數,截斷向零的實部。
MAX (A1, A2 [, A3,...]) 返回的引數的最大值,相同型別
MIN (A1, A2 [, A3,...]) 返回的引數的最小值,相同型別
MOD (A, P) 返回用P除以A餘數部分,這兩個引數型別相同 (A-INT(A/P)*P)
MODULO (A, P) 返回一個模P:(A-FLOOR(A/P)*P)
NINT (A [, KIND]) 返回一個最接近整數A的數
REAL (A [, KIND]) 將其轉換為實數型別
SIGN (A, B) 返回一個乘以P. 符號的絕對值基本上它轉移B的標誌為A.

範例

program numericFunctions
implicit none  

   ! define constants  
   ! define variables
   real :: a, b 
   complex :: z
   
   ! values for a, b 
   a = 15.2345
   b = -20.7689
    
   write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)   
   write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b) 
   write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)   
   write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)  
    
   z = cmplx(a, b)
   write(*,*) 'z: ',z   
   
end program numericFunctions

當編譯並執行上述程式,它會產生以下結果:

abs(a): 15.2344999   abs(b): 20.7688999    
aint(a): 15.0000000  aint(b): -20.0000000    
ceiling(a): 16  ceiling(b): -20
floor(a): 15  floor(b): -21
z: (15.2344999, -20.7688999)

數學函式

函式 描述
ACOS (X) 返回該反餘弦在範圍(0,π),以弧度的形式。
ASIN (X) 返回該反正弦在範圍(-π/ 2,π/ 2),單位為弧度。
ATAN (X) 返回反正切的範圍(-π/ 2,π/ 2),單位為弧度。
ATAN2 (Y, X) 返回反正切的範圍(-π,π),以弧度表示。
COS (X) 返回引數的弧度的餘弦值。
COSH (X) 返回引數的弧度的雙曲餘弦值。
EXP (X) 返回X的指數值
LOG (X) 返回X的自然對數值
LOG10 (X) 返回常用對數(10為基數)X的值
SIN (X) 返回引數的弧度的正弦值。
SINH (X) 返回引數的弧度雙曲正弦。
SQRT (X) 返回X的平方根
TAN (X) 返回引數的弧度的切線。
TANH (X) 返回引數弧度的雙曲正切值。

範例

下列程式計算水平和垂直位置x和y表示拋射時間,t:

這裡, x = u t cos a 以及 y = u t sin a - g t2 / 2

program projectileMotion  
implicit none  

   ! define constants  
   real, parameter :: g = 9.8  
   real, parameter :: pi = 3.1415927  
   
   !define variables
   real :: a, t, u, x, y   
   
   !values for a, t, and u 
   a = 45.0
   t = 20.0
   u = 10.0
   
   ! convert angle to radians  
   a = a * pi / 180.0  
   x = u * cos(a) * t   
   y = u * sin(a) * t - 0.5 * g * t * t  
   
   write(*,*) 'x: ',x,'  y: ',y   
   
end program projectileMotion

當編譯並執行上述程式,它會產生以下結果:

x: 141.421356  y: -1818.57861  

數位查詢函式

這些函式的工作在整數模型和浮點運算。該函式返回相同的種類作為變數X,它可以是實數,在某些情況下,擁有整數的性質。

函式 描述
DIGITS (X) 返回顯著模型的位數。
EPSILON (X) 返回相比一個是幾乎可以忽略不計的數目。換句話說,它返回最小值,使得REAL( 1.0, KIND(X)) + EPSILON(X)為不等於REAL( 1.0, KIND(X))。
HUGE (X) 返回模型最多數量
MAXEXPONENT (X) 返回該模型的最大指數
MINEXPONENT (X) 返回該模型的最小指數
PRECISION (X) 返回小數精度
RADIX (X) 返回該模型的基數
RANGE (X) 返回十進位制指數範圍
TINY (X) 返回該模型的最小正數

浮點操作函式

函式 描述
EXPONENT (X) 返回一個模型數的指數部分
FRACTION (X) 返回一個數的小數部分
NEAREST (X, S) 返回給定的方向最近的不同處理器編號
RRSPACING (X) 返回型號的鄰近給定數量的相對間隔的倒數
SCALE (X, I) 乘以一個實數由基數的整數次冪
SET_EXPONENT (X, I) 返回一個數的指數部分
SPACING (X) 返回型號的絕對間隔接近指定數值

位元運算函式

函式 描述
BIT_SIZE (I) 返回該模型的位元數
BTEST (I, POS) 位測試
IAND (I, J) 邏輯與
IBCLR (I, POS) 清除位
IBITS (I, POS, LEN) 位提取
IBSET (I, POS) 設定位
IEOR (I, J) 互斥或
IOR (I, J) 包括或
ISHFT (I, SHIFT) 邏輯移位
ISHFTC (I, SHIFT [, SIZE]) 迴圈移位
NOT (I) 邏輯補

字元函式

函式 描述
ACHAR (I) 它返回ASCII整理序列中的第i個字元。
ADJUSTL (STRING) 它通過調節刪除任何前導空格和插入尾隨空白留下的字串
ADJUSTR (STRING) 它去除右尾隨空白和插入前導空格調整字串。
CHAR (I [, KIND]) 它返回特定機器整理序列中的第i個字元
IACHAR (C) 它返回字元的ASCII碼排序序列中的位置。
ICHAR (C) 它返回字元在機器(處理器)特定排序序列中的位置。
INDEX (STRING, SUBSTRING [, BACK]) 它返回SUBSTRING內STRING最左邊(最右邊如果返回.TRUE。)起始位置。
LEN (STRING) 它返回字串的長度。
LEN_TRIM (STRING) 它返回一個字串的長度沒有結尾的空白字元。
LGE (STRING_A, STRING_B) 詞彙上大於或等於
LGT (STRING_A, STRING_B) 詞彙上大於
LLE (STRING_A, STRING_B) 詞彙上大於或等於以下
LLT (STRING_A, STRING_B) 詞彙上小於
REPEAT (STRING, NCOPIES) 重複並置
SCAN (STRING, SET [, BACK]) 它返回STRING屬於集,或者0,如果都不屬於最左邊(最右邊如果返回.TRUE。)字元的索引。
TRIM (STRING) 刪除結尾的空白字元
VERIFY (STRING, SET [, BACK]) 驗證字元集的字串

型別函式

函式 描述
KIND (X) 它返回種類型別的引數值。
SELECTED_INT_KIND (R) 它返回一種為特定網路版的指數範圍型別的引數。
SELECTED_REAL_KIND ([P, R]) 實數型別的引數值,指定精度和範圍

邏輯函式

Function 描述
LOGICAL (L [, KIND]) 邏輯型的不同種型別引數物件之間轉換