Fortran 内置函数
内置函数是 Fortran 语言中提供的一些常见且重要的函数。我们已经在数组、字符和字符串章节中讨论了其中的一些函数。
内置函数可分为:
- 数值函数
- 数学函数
- 数字查询函数
- 浮点操作函数
- 位操作函数
- 字符函数
- 类型函数
- 逻辑函数
- 数组函数
我们在数组一章中讨论了数组函数。在下一节中,我们将简要介绍其他类别中的所有这些功能。
在函数名称列中,
- A 表示任何类型的数值变量
- R 代表实数或整数变量
- X 和 Y 代表实变量
- Z 代表复数变量
- W 代表实数或复数变量
数值函数
序号 | 函数 & 描述 |
---|---|
1 | ABS (A) 它返回 A 的绝对值 |
2 | AIMAG (Z) 它返回复数 Z 的虚部 |
3 | AINT (A [, KIND]) 它将 A 的小数部分截断为 0,返回一个实数 |
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]) 它将数字(实数或整数)转换为整数,将实数部分截断为 0 |
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]) 它返回属于 SET 的 STRING 字符的最左侧(如果 BACK 为 .TRUE.,则返回最右侧)的索引,如果不属于 SET,则返回 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]) 在具有不同种类类型参数的逻辑类型对象之间进行转换 |