Fortran標(biāo)準(zhǔn)內(nèi)置函數(shù)和子程序
Fortran的標(biāo)準(zhǔn)內(nèi)置函數(shù)和子程序是一些程序內(nèi)置的過程,可以直接調(diào)用,不需要定義或聲明。它們可以分為以下幾類:
- 參數(shù)存在查詢函數(shù):用于檢查一個(gè)可選參數(shù)是否存在。
- 數(shù)值函數(shù):用于進(jìn)行數(shù)值類型的轉(zhuǎn)換或運(yùn)算。
- 數(shù)學(xué)函數(shù):用于進(jìn)行數(shù)學(xué)運(yùn)算,如三角函數(shù),指數(shù)函數(shù),對(duì)數(shù)函數(shù)等。
- 字符串函數(shù):用于進(jìn)行字符串類型的轉(zhuǎn)換或操作,如連接,比較,查找等。
- 位操作函數(shù):用于進(jìn)行位運(yùn)算,如位與,位或,位異或等。
- 數(shù)組函數(shù):用于進(jìn)行數(shù)組類型的轉(zhuǎn)換或操作,如求和,求積,求最大值,最小值等。
- 排序和搜索函數(shù):用于對(duì)數(shù)組進(jìn)行排序或搜索。
- 系統(tǒng)服務(wù)函數(shù):用于獲取或設(shè)置系統(tǒng)相關(guān)的信息,如時(shí)間,日期,文件狀態(tài)等。
- 環(huán)境查詢函數(shù):用于獲取或設(shè)置環(huán)境相關(guān)的信息,如編譯器版本,錯(cuò)誤處理模式等。
| 函數(shù)名(參數(shù)) | 說明 |
| :---: | :---: |
| **參數(shù)存在查詢函數(shù)** |
| PRESENT(A) | 判斷可選參數(shù)A是否存在 |
| **數(shù)值函數(shù)** |
| ABS(A) | 絕對(duì)值 |
| AIMAG(Z) | 復(fù)數(shù)的虛部 |
| AINT(A[,KIND]) | 整數(shù)截尾 |
| ANINT(A[,KIND]) | 最近的整數(shù) |
| CEILING(A[,KIND]) | 大于或等于數(shù)值的最小整數(shù) |
| CMPLX(X[,Y,KIND]) | 轉(zhuǎn)換為復(fù)數(shù)類型 |
| CONJG(Z) | 共軛復(fù)數(shù) |
| DBLE(A) | 轉(zhuǎn)換為雙精度實(shí)數(shù)類型 |
| DIM(X,Y) | 正偏差 |
| DPROD(X,Y) | 雙精度實(shí)數(shù)乘積 |
| FLOOR(A[,KIND]) | 小于或等于數(shù)值的最大整數(shù) |
| INT(A[,KIND]) | 轉(zhuǎn)換為整數(shù)類型 |
| MAX(A1,A2[,A3,...]) | 最大值 |
| MIN(A1,A2[,A3,...]) | 最小值 |
| MOD(A,P) | 余數(shù)函數(shù) |
| MODULO(A,P) | 模數(shù)函數(shù) |
| NINT(A[,KIND]) | 最近的整數(shù) |
| REAL(A[,KIND]) | 轉(zhuǎn)換為實(shí)數(shù)類型 |
| SIGN(A,B) | 符號(hào)傳輸 |
| **數(shù)學(xué)函數(shù)** |
| ACOS(X) | 反余弦 |
| ASIN(X) | 反正弦 |
| ATAN(X) | 反正切 |
| ATAN2(Y,X) | 反正切(兩個(gè)參數(shù))|
| COS(X) | 余弦 |
| COSH(X) | 雙曲余弦 |
| EXP(X) | 指數(shù) |
| LOG(X) | 自然對(duì)數(shù) |
| LOG10(X) | 常用對(duì)數(shù)(10為基數(shù))|
| SIN(X) | 正弦 |
| SINH(X) | 雙曲正弦 |
| SQRT(X) | 平方根 |
| TAN(X) | 正切 |
| TANH(X) | 雙曲正切 |
| **字符串函數(shù)**|
| ACHAR(I) | ASCII字符從代碼轉(zhuǎn)換|
| ADJUSTL(STRING) | 調(diào)整字符串左對(duì)齊|
| ADJUSTR(STRING) | 調(diào)整字符串右對(duì)齊|
| CHAR(I[,KIND]) ? | 字符從代碼轉(zhuǎn)換|
| IACHAR(C) ? ? ? ?| ASCII代碼從字符轉(zhuǎn)換|
| ICHAR(C[,KIND]) ?| 代碼從字符轉(zhuǎn)換|
| INDEX(STRING,SUBSTRING[,BACK]) | 查找子字符串在字符串中的位置|
| 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) | 重復(fù)字符串N次|
| SCAN(STRING,SET[,BACK]) | 查找字符串中包含集合中字符的位置|
| TRIM(STRING) ? ? | 去除字符串末尾空格|
| VERIFY(STRING,SET[,BACK]) | 查找字符串中不包含集合中字符的位置|
| **位操作函數(shù)** |
| BTEST(I,POS) ? ? | 檢查整數(shù)I的第POS位是否為1 |
| IAND(I,J) ? ? ? ?| 整數(shù)I和J的位與運(yùn)算 |
| IBCLR(I,POS) ? ? | 將整數(shù)I的第POS位清零 |
| IBITS(I,POS,LEN) | 提取整數(shù)I的第POS位開始的LEN位 |
| IBSET(I,POS) ? ? | 將整數(shù)I的第POS位置一 |
| IEOR(I,J) ? ? ? ?| 整數(shù)I和J的位異或運(yùn)算 |
| IOR(I,J) ? ? ? ? | 整數(shù)I和J的位或運(yùn)算 |
| ISHFT(I,SHIFT) ? | 將整數(shù)I按SHIFT位進(jìn)行左移或右移 |
| ISHFTC(I,SHIFT[,SIZE]) | 將整數(shù)I按SHIFT位進(jìn)行循環(huán)移位 |
| **數(shù)組函數(shù)** |
| ALL(MASK[,DIM]) ?| 判斷數(shù)組MASK中所有元素是否為真 |
| ALLOCATED(ARRAY) | 判斷數(shù)組ARRAY是否已分配內(nèi)存 |
| ANY(MASK[,DIM]) ?| 判斷數(shù)組MASK中是否有元素為真 |
| COUNT(MASK[,DIM]) | 統(tǒng)計(jì)數(shù)組MASK中為真的元素個(gè)數(shù) |
| CSHIFT(ARRAY,SHIFT[,DIM]) | 將數(shù)組ARRAY按SHIFT位進(jìn)行循環(huán)移位 |
| DOT_PRODUCT(VECTOR_A,VECTOR_B) | 計(jì)算兩個(gè)向量的點(diǎn)積 |
| EOSHIFT(ARRAY,SHIFT[,BOUNDARY,DIM]) | 將數(shù)組ARRAY按SHIFT位進(jìn)行端點(diǎn)移位 |
| LBOUND(ARRAY[,DIM]) | 返回?cái)?shù)組ARRAY的下界 |
| MATMUL(MATRIX_A,MATRIX_B) | 計(jì)算兩個(gè)矩陣或向量的乘積 |
| MAXVAL(ARRAY[,DIM,MASK]) | 返回?cái)?shù)組ARRAY中的最大值 |
| MAXLOC(ARRAY[,DIM,MASK]) | 返回?cái)?shù)組ARRAY中最大值的位置 |
| MINVAL(ARRAY[,DIM,MASK]) | 返回?cái)?shù)組ARRAY中的最小值 |
| MINLOC(ARRAY[,DIM,MASK]) | 返回?cái)?shù)組ARRAY中最小值的位置 |
| PRODUCT(ARRAY[,DIM,MASK]) | 返回?cái)?shù)組ARRAY中所有元素的乘積 |
| RESHAPE(SOURCE,SHAPE[,PAD,ORDER]) | 改變數(shù)組SOURCE的形狀 |
| SHAPE(SOURCE) ? ?| 返回?cái)?shù)組SOURCE的形狀 |
| SIZE(ARRAY[,DIM]) ?| 返回?cái)?shù)組ARRAY的大小或維度大小 |
| SPREAD(SOURCE,DIM,NCOPIES) ?| 擴(kuò)展數(shù)組SOURCE在某一維度上的大小 |
| SUM(ARRAY[,DIM,MASK]) ?| 返回?cái)?shù)組ARRAY中所有元素的和 |
| TRANSPOSE(MATRIX)| 轉(zhuǎn)置矩陣MATRIX |
| UBOUND(ARRAY[,DIM]) ?| 返回?cái)?shù)組ARRAY的上界 |
元素子程序和非元素子程序:
| 子程序名(參數(shù)) | 說明 |
| :---: | :---: |
| **元素子程序** |
| MVBITS(FROM,FROMPOS,LEN,TO,TOPOS) | 將FROM中第FROMPOS位開始LEN位復(fù)制到TO中第TOPOS位開始 |
| **非元素子程序** |
| CPU_TIME(TIME) | 返回CPU時(shí)間 |
| DATE_AND_TIME([DATE,TIME,ZONE,VALUES]) | 返回日期和時(shí)間 |
| EVENT_QUERY(EVENT_NUMBER,EVENT_STATE) | 查詢事件狀態(tài) |
|EXECUTE_COMMAND_LINE(COMMAND[,WAIT,EXITSTAT,STATUS,CMDSTAT,CMDMSG]) | 執(zhí)行命令行 |
| GET_COMMAND([COMMAND,LENGTH,STATUS]) | 獲取命令行 |
| GET_COMMAND_ARGUMENT(NUMBER[,VALUE,LENGTH,STATUS]) | 獲取命令行參數(shù) |
| GET_ENVIRONMENT_VARIABLE(NAME[,VALUE,LENGTH,STATUS,TRIM_NAME]) | 獲取環(huán)境變量 |
| MOVE_ALLOC(FROM,TO) | 移動(dòng)分配內(nèi)存 |
| RANDOM_INIT(REPEATABLE,DIFFERENT_SEEDS) | 初始化隨機(jī)數(shù)發(fā)生器 |
| RANDOM_NUMBER(HARVEST) | 生成隨機(jī)數(shù) |
| RANDOM_SEED([SIZE,PUT,GET]) | 設(shè)置或獲取隨機(jī)數(shù)種子 |
| SYSTEM_CLOCK([COUNT,RATE,MAXIMUM]) | 獲取系統(tǒng)時(shí)鐘信息 |
原子子程序和集合子程序:
| 子程序名(參數(shù)) | 說明 |
| :---: | :---: |
| **原子子程序** |
| ATOMIC_ADD(ATOM,SOURCE) | 對(duì)共享變量ATOM進(jìn)行原子加法操作 |
| ATOMIC_AND(ATOM,SOURCE) | 對(duì)共享變量ATOM進(jìn)行原子位與操作 |
| ATOMIC_CAS(ATOM,COMPARE,SOURCE,[OLD]) | 對(duì)共享變量ATOM進(jìn)行原子比較和交換操作 |
| ATOMIC_DEFINE(ATOM,SOURCE) | 對(duì)共享變量ATOM進(jìn)行原子賦值操作 |
| ATOMIC_FETCH_ADD(ATOM,SOURCE,[OLD]) | 對(duì)共享變量ATOM進(jìn)行原子加法操作,并返回舊值 |
| ATOMIC_FETCH_AND(ATOM,SOURCE,[OLD]) | 對(duì)共享變量ATOM進(jìn)行原子位與操作,并返回舊值 |
| ATOMIC_FETCH_OR(ATOM,SOURCE,[OLD]) ?| 對(duì)共享變量ATOM進(jìn)行原子位或操作,并返回舊值 |
| ATOMIC_FETCH_XOR(ATOM,SOURCE,[OLD]) ?| 對(duì)共享變量ATOM進(jìn)行原子位異或操作,并返回舊值 |
| ATOMIC_OR(ATOM,SOURCE) ?| 對(duì)共享變量ATOM進(jìn)行原子位或操作 |
| ATOMIC_REF(ATOM,[IMAGE_INDEX],[STAT],[TEAM,MOLD]) ?| 獲取共享變量ATOM的值,可選地指定圖像索引,狀態(tài),團(tuán)隊(duì)和模型 |
| ATOMIC_XOR(ATOM,SOURCE) ?| 對(duì)共享變量ATOM進(jìn)行原子位異或操作 |
| **集合子程序**|
| CO_BROADCAST(COARRAY[,SOURCE_IMAGE,MOLD,TEAM]) ?| 將COARRAY的值從源圖像廣播到當(dāng)前圖像集合中的所有圖像上,可選地指定模型和團(tuán)隊(duì)|