
- Fortran 教程
- Fortran - 首頁
- Fortran - 概述
- Fortran - 環境設定
- Fortran - 基本語法
- Fortran - 資料型別
- Fortran - 變數
- Fortran - 常量
- Fortran - 運算子
- Fortran - 決策
- Fortran - 迴圈
- Fortran - 數字
- Fortran - 字元
- Fortran - 字串
- Fortran - 陣列
- Fortran - 動態陣列
- Fortran - 派生資料型別
- Fortran - 指標
- Fortran - 基本輸入輸出
- Fortran - 檔案輸入輸出
- Fortran - 過程
- Fortran - 模組
- Fortran - 內在函式
- Fortran - 數值精度
- Fortran - 程式庫
- Fortran - 程式設計風格
- Fortran - 除錯程式
- Fortran 資源
- Fortran - 快速指南
- Fortran - 有用資源
- Fortran - 討論
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]) 在具有不同種類型別引數的邏輯型別物件之間轉換。 |