欢迎光临散文网 会员登陆 & 注册

Fortran标准内置函数和子程序

2023-06-29 15:49 作者:阳既望  | 我要投稿


Fortran的标准内置函数和子程序是一些程序内置的过程,可以直接调用,不需要定义或声明。它们可以分为以下几类:

- 参数存在查询函数:用于检查一个可选参数是否存在。

- 数值函数:用于进行数值类型的转换或运算。

- 数学函数:用于进行数学运算,如三角函数,指数函数,对数函数等。

- 字符串函数:用于进行字符串类型的转换或操作,如连接,比较,查找等。

- 位操作函数:用于进行位运算,如位与,位或,位异或等。

- 数组函数:用于进行数组类型的转换或操作,如求和,求积,求最大值,最小值等。

- 排序和搜索函数:用于对数组进行排序或搜索。

- 系统服务函数:用于获取或设置系统相关的信息,如时间,日期,文件状态等。

- 环境查询函数:用于获取或设置环境相关的信息,如编译器版本,错误处理模式等。


| 函数名(参数) | 说明 |

| :---: | :---: |

| **参数存在查询函数** |

| PRESENT(A) | 判断可选参数A是否存在 |

| **数值函数** |

| ABS(A) | 绝对值 |

| AIMAG(Z) | 复数的虚部 |

| AINT(A[,KIND]) | 整数截尾 |

| ANINT(A[,KIND]) | 最近的整数 |

| CEILING(A[,KIND]) | 大于或等于数值的最小整数 |

| CMPLX(X[,Y,KIND]) | 转换为复数类型 |

| CONJG(Z) | 共轭复数 |

| DBLE(A) | 转换为双精度实数类型 |

| DIM(X,Y) | 正偏差 |

| DPROD(X,Y) | 双精度实数乘积 |

| FLOOR(A[,KIND]) | 小于或等于数值的最大整数 |

| INT(A[,KIND]) | 转换为整数类型 |

| MAX(A1,A2[,A3,...]) | 最大值 |

| MIN(A1,A2[,A3,...]) | 最小值 |

| MOD(A,P) | 余数函数 |

| MODULO(A,P) | 模数函数 |

| NINT(A[,KIND]) | 最近的整数 |

| REAL(A[,KIND]) | 转换为实数类型 |

| SIGN(A,B) | 符号传输 |

| **数学函数** |

| ACOS(X) | 反余弦 |

| ASIN(X) | 反正弦 |

| ATAN(X) | 反正切 |

| ATAN2(Y,X) | 反正切(两个参数)|

| COS(X) | 余弦 |

| COSH(X) | 双曲余弦 |

| EXP(X) | 指数 |

| LOG(X) | 自然对数 |

| LOG10(X) | 常用对数(10为基数)|

| SIN(X) | 正弦 |

| SINH(X) | 双曲正弦 |

| SQRT(X) | 平方根 |

| TAN(X) | 正切 |

| TANH(X) | 双曲正切 |

| **字符串函数**|

| ACHAR(I) | ASCII字符从代码转换|

| ADJUSTL(STRING) | 调整字符串左对齐|

| ADJUSTR(STRING) | 调整字符串右对齐|

| CHAR(I[,KIND])   | 字符从代码转换|

| IACHAR(C)        | ASCII代码从字符转换|

| ICHAR(C[,KIND])  | 代码从字符转换|

| 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) | 重复字符串N次|

| SCAN(STRING,SET[,BACK]) | 查找字符串中包含集合中字符的位置|

| TRIM(STRING)     | 去除字符串末尾空格|

| VERIFY(STRING,SET[,BACK]) | 查找字符串中不包含集合中字符的位置|

| **位操作函数** |

| BTEST(I,POS)     | 检查整数I的第POS位是否为1 |

| IAND(I,J)        | 整数I和J的位与运算 |

| IBCLR(I,POS)     | 将整数I的第POS位清零 |

| IBITS(I,POS,LEN) | 提取整数I的第POS位开始的LEN位 |

| IBSET(I,POS)     | 将整数I的第POS位置一 |

| IEOR(I,J)        | 整数I和J的位异或运算 |

| IOR(I,J)         | 整数I和J的位或运算 |

| ISHFT(I,SHIFT)   | 将整数I按SHIFT位进行左移或右移 |

| ISHFTC(I,SHIFT[,SIZE]) | 将整数I按SHIFT位进行循环移位 |

| **数组函数** |

| ALL(MASK[,DIM])  | 判断数组MASK中所有元素是否为真 |

| ALLOCATED(ARRAY) | 判断数组ARRAY是否已分配内存 |

| ANY(MASK[,DIM])  | 判断数组MASK中是否有元素为真 |

| COUNT(MASK[,DIM]) | 统计数组MASK中为真的元素个数 |

| CSHIFT(ARRAY,SHIFT[,DIM]) | 将数组ARRAY按SHIFT位进行循环移位 |

| DOT_PRODUCT(VECTOR_A,VECTOR_B) | 计算两个向量的点积 |

| EOSHIFT(ARRAY,SHIFT[,BOUNDARY,DIM]) | 将数组ARRAY按SHIFT位进行端点移位 |

| LBOUND(ARRAY[,DIM]) | 返回数组ARRAY的下界 |

| MATMUL(MATRIX_A,MATRIX_B) | 计算两个矩阵或向量的乘积 |

| MAXVAL(ARRAY[,DIM,MASK]) | 返回数组ARRAY中的最大值 |

| MAXLOC(ARRAY[,DIM,MASK]) | 返回数组ARRAY中最大值的位置 |

| MINVAL(ARRAY[,DIM,MASK]) | 返回数组ARRAY中的最小值 |

| MINLOC(ARRAY[,DIM,MASK]) | 返回数组ARRAY中最小值的位置 |

| PRODUCT(ARRAY[,DIM,MASK]) | 返回数组ARRAY中所有元素的乘积 |

| RESHAPE(SOURCE,SHAPE[,PAD,ORDER]) | 改变数组SOURCE的形状 |

| SHAPE(SOURCE)    | 返回数组SOURCE的形状 |

| SIZE(ARRAY[,DIM])  | 返回数组ARRAY的大小或维度大小 |

| SPREAD(SOURCE,DIM,NCOPIES)  | 扩展数组SOURCE在某一维度上的大小 |

| SUM(ARRAY[,DIM,MASK])  | 返回数组ARRAY中所有元素的和 |

| TRANSPOSE(MATRIX)| 转置矩阵MATRIX |

| UBOUND(ARRAY[,DIM])  | 返回数组ARRAY的上界 |


元素子程序和非元素子程序:


| 子程序名(参数) | 说明 |

| :---: | :---: |

| **元素子程序** |

| MVBITS(FROM,FROMPOS,LEN,TO,TOPOS) | 将FROM中第FROMPOS位开始LEN位复制到TO中第TOPOS位开始 |

| **非元素子程序** |

| CPU_TIME(TIME) | 返回CPU时间 |

| DATE_AND_TIME([DATE,TIME,ZONE,VALUES]) | 返回日期和时间 |

| EVENT_QUERY(EVENT_NUMBER,EVENT_STATE) | 查询事件状态 |

|EXECUTE_COMMAND_LINE(COMMAND[,WAIT,EXITSTAT,STATUS,CMDSTAT,CMDMSG]) | 执行命令行 |

| GET_COMMAND([COMMAND,LENGTH,STATUS]) | 获取命令行 |

| GET_COMMAND_ARGUMENT(NUMBER[,VALUE,LENGTH,STATUS]) | 获取命令行参数 |

| GET_ENVIRONMENT_VARIABLE(NAME[,VALUE,LENGTH,STATUS,TRIM_NAME]) | 获取环境变量 |

| MOVE_ALLOC(FROM,TO) | 移动分配内存 |

| RANDOM_INIT(REPEATABLE,DIFFERENT_SEEDS) | 初始化随机数发生器 |

| RANDOM_NUMBER(HARVEST) | 生成随机数 |

| RANDOM_SEED([SIZE,PUT,GET]) | 设置或获取随机数种子 |

| SYSTEM_CLOCK([COUNT,RATE,MAXIMUM]) | 获取系统时钟信息 |


原子子程序和集合子程序:


| 子程序名(参数) | 说明 |

| :---: | :---: |

| **原子子程序** |

| ATOMIC_ADD(ATOM,SOURCE) | 对共享变量ATOM进行原子加法操作 |

| ATOMIC_AND(ATOM,SOURCE) | 对共享变量ATOM进行原子位与操作 |

| ATOMIC_CAS(ATOM,COMPARE,SOURCE,[OLD]) | 对共享变量ATOM进行原子比较和交换操作 |

| ATOMIC_DEFINE(ATOM,SOURCE) | 对共享变量ATOM进行原子赋值操作 |

| ATOMIC_FETCH_ADD(ATOM,SOURCE,[OLD]) | 对共享变量ATOM进行原子加法操作,并返回旧值 |

| ATOMIC_FETCH_AND(ATOM,SOURCE,[OLD]) | 对共享变量ATOM进行原子位与操作,并返回旧值 |

| ATOMIC_FETCH_OR(ATOM,SOURCE,[OLD])  | 对共享变量ATOM进行原子位或操作,并返回旧值 |

| ATOMIC_FETCH_XOR(ATOM,SOURCE,[OLD])  | 对共享变量ATOM进行原子位异或操作,并返回旧值 |

| ATOMIC_OR(ATOM,SOURCE)  | 对共享变量ATOM进行原子位或操作 |

| ATOMIC_REF(ATOM,[IMAGE_INDEX],[STAT],[TEAM,MOLD])  | 获取共享变量ATOM的值,可选地指定图像索引,状态,团队和模型 |

| ATOMIC_XOR(ATOM,SOURCE)  | 对共享变量ATOM进行原子位异或操作 |

| **集合子程序**|

| CO_BROADCAST(COARRAY[,SOURCE_IMAGE,MOLD,TEAM])  | 将COARRAY的值从源图像广播到当前图像集合中的所有图像上,可选地指定模型和团队|



Fortran标准内置函数和子程序的评论 (共 条)

分享到微博请遵守国家法律