Fortran - 內在函式



內在函式是一些常見且重要的函式,作為 Fortran 語言的一部分提供。我們已經在陣列、字元和字串章節中討論了一些這些函式。

內在函式可以分類為:

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

我們在陣列章節中討論了陣列函式。在以下部分,我們提供了所有其他類別函式的簡要描述。

在函式名稱列中,

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

數值函式

序號 函式和描述
1

ABS (A)

返回 A 的絕對值。

2

AIMAG (Z)

返回複數 Z 的虛部。

3

AINT (A [, KIND])

將 A 的小數部分截斷為零,返回一個實數整數。

4

ANINT (A [, KIND])

返回一個實數值,最接近的整數或整數。

5

CEILING (A [, KIND])

返回大於或等於數字 A 的最小整數。

6

CMPLX (X [, Y, KIND])

將實數變數 X 和 Y 轉換為複數 X+iY;如果 Y 缺失,則使用 0。

7

CONJG (Z)

返回任何複數 Z 的共軛複數。

8

DBLE (A)

將 A 轉換為雙精度實數。

9

DIM (X, Y)

返回 X 和 Y 的正差。

10

DPROD (X, Y)

返回 X 和 Y 的雙精度實數積。

11

FLOOR (A [, KIND])

提供小於或等於數字 A 的最大整數。

12

INT (A [, KIND])

將數字(實數或整數)轉換為整數,將實數部分截斷為零。

13

MAX (A1, A2 [, A3,...])

從引數中返回最大值,所有引數都具有相同的型別。

14

MIN (A1, A2 [, A3,...])

從引數中返回最小值,所有引數都具有相同的型別。

15

MOD (A, P)

返回 A 除以 P 的餘數,兩個引數都具有相同的型別 (A-INT(A/P)*P)

16

MODULO (A, P)

返回 A 模 P:(A-FLOOR(A/P)*P)

17

NINT (A [, KIND])

返回數字 A 的最接近整數。

18

REAL (A [, KIND])

轉換為實數型別。

19

SIGN (A, B)

返回 A 的絕對值乘以 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)

數學函式

序號 函式和描述
1

ACOS (X)

返回範圍 (0, π) 內的反餘弦,以弧度為單位。

2

ASIN (X)

返回範圍 (-π/2, π/2) 內的反正弦,以弧度為單位。

3

ATAN (X)

返回範圍 (-π/2, π/2) 內的反正切,以弧度為單位。

4

ATAN2 (Y, X)

返回範圍 (-π, π) 內的反正切,以弧度為單位。

5

COS (X)

返回以弧度為單位的引數的餘弦。

6

COSH (X)

返回以弧度為單位的引數的雙曲餘弦。

7

EXP (X)

返回 X 的指數值。

8

LOG (X)

返回 X 的自然對數值。

9

LOG10 (X)

返回 X 的常用對數值(以 10 為底)。

10

SIN (X)

返回以弧度為單位的引數的正弦。

11

SINH (X)

返回以弧度為單位的引數的雙曲正弦。

12

SQRT (X)

返回 X 的平方根。

13

TAN (X)

返回以弧度為單位的引數的正切。

14

TANH (X)

返回以弧度為單位的引數的雙曲正切。

示例

以下程式計算彈丸在時間 t 後的水平和垂直位置 x 和 y:

其中,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 同類型的數字的屬性,該變數可以是實數,在某些情況下也可以是整數。

序號 函式和描述
1

DIGITS (X)

返回模型的有效數字位數。

2

EPSILON (X)

返回與 1 相比幾乎可以忽略不計的數字。換句話說,它返回最小的值,使得 REAL( 1.0, KIND(X)) + EPSILON(X) 不等於 REAL( 1.0, KIND(X))。

3

HUGE (X)

返回模型的最大數字。

4

MAXEXPONENT (X)

返回模型的最大指數。

5

MINEXPONENT (X)

返回模型的最小指數。

6

PRECISION (X)

返回十進位制精度。

7

RADIX (X)

返回模型的基數。

8

RANGE (X)

返回十進位制指數範圍。

9

TINY (X)

返回模型最小的正數。

浮點操作函式

序號 函式和描述
1

EXPONENT (X)

返回模型數字的指數部分。

2

FRACTION (X)

返回數字的小數部分。

3

NEAREST (X, S)

返回給定方向上最接近的不同處理器數字。

4

RRSPACING (X)

返回給定數字附近模型數字的相對間距的倒數。

5

SCALE (X, I)

將實數乘以其基數的整數次冪。

6

SET_EXPONENT (X, I)

返回數字的指數部分。

7

SPACING (X)

返回給定數字附近模型數字的絕對間距。

位操作函式

序號 函式和描述
1

BIT_SIZE (I)

返回模型的位數。

2

BTEST (I, POS)

位測試。

3

IAND (I, J)

邏輯與。

4

IBCLR (I, POS)

清除位。

5

IBITS (I, POS, LEN)

位提取。

6

IBSET (I, POS)

設定位。

7

IEOR (I, J)

異或。

8

IOR (I, J)

或。

9

ISHFT (I, SHIFT)

邏輯移位。

10

ISHFTC (I, SHIFT [, SIZE])

迴圈移位。

11

NOT (I)

邏輯非。

字元函式

序號 函式和描述
1

ACHAR (I)

返回 ASCII 排序序列中的第 I 個字元。

2

ADJUSTL (STRING)

透過刪除任何前導空格並插入尾隨空格來向左調整字串。

3

ADJUSTR (STRING)

透過刪除尾隨空格並插入前導空格來向右調整字串。

4

CHAR (I [, KIND])

返回機器特定排序序列中的第 I 個字元。

5

IACHAR (C)

返回字元在 ASCII 排序序列中的位置。

6

ICHAR (C)

返回字元在機器(處理器)特定排序序列中的位置。

7

INDEX (STRING, SUBSTRING [, BACK])

返回 STRING 中 SUBSTRING 的最左邊(如果 BACK 為 .TRUE. 則為最右邊)起始位置。

8

LEN (STRING)

返回字串的長度。

9

LEN_TRIM (STRING)

返回字串的長度,不包括尾隨空格字元。

10

LGE (STRING_A, STRING_B)

詞法上大於或等於。

11

LGT (STRING_A, STRING_B)

詞法上大於。

12

LLE (STRING_A, STRING_B)

詞法上小於或等於。

13

LLT (STRING_A, STRING_B)

詞法上小於。

14

REPEAT (STRING, NCOPIES)

重複連線。

15

SCAN (STRING, SET [, BACK])

返回 STRING 中屬於 SET 的最左邊(如果 BACK 為 .TRUE. 則為最右邊)字元的索引,如果都不屬於則返回 0。

16

TRIM (STRING)

刪除尾隨空格字元。

17

VERIFY (STRING, SET [, BACK])

驗證字串中的一組字元。

種類函式

序號 函式和描述
1

KIND (X)

返回種類型別引數值。

2

SELECTED_INT_KIND (R)

返回指定指數範圍的種類型別引數。

3

SELECTED_REAL_KIND ([P, R])

實數種類型別引數值,給定精度和範圍。

邏輯函式

序號 函式和描述
1

LOGICAL (L [, KIND])

在具有不同種類型別引數的邏輯型別物件之間轉換。

廣告