- 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]) 在具有不同种类类型参数的逻辑类型对象之间转换。 |