Fortran 简明教程
Fortran - Intrinsic Functions
本征函数是一些通用且重要的函数,它是 Fortran 语言的一部分。我们已经在“数组”、“字符”和“字符串”章节中讨论了一些这些函数。
本征函数可以分类为 -
-
Numeric Functions
-
Mathematical Functions
-
Numeric Inquiry Functions
-
Floating-Point Manipulation Functions
-
Bit Manipulation Functions
-
Character Functions
-
Kind Functions
-
Logical Functions
-
Array Functions.
我们在“数组”章节中讨论了数组函数。在下一部分中,我们将提供其他类别的所有这些函数的简要说明。
在函数名列中,
-
A 表示任何类型的数值变量
-
R 表示实变量或整变量
-
X 和 Y 表示实变量
-
Z represents complex variable
-
W 表示实变量或复变量
Numeric Functions
Sr.No |
Function & Description |
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。 |
Example
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)
Mathematical Functions
Sr.No |
Function & Description |
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) 它返回以弧度为单位的参数的双曲正切。 |
Example
以下程序分别计算某个时间后的投射物水平和垂直位置 x 和 y,t −
其中,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
Numeric Inquiry Functions
这些函数适用于某一整数和浮点数算术模型。这些函数返回与变量 X 同样的数字的特性,该变量可以是实数值,在某些情况下还可以是整数。
Sr.No |
Function & Description |
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) 它返回模型的最小正值 |
Floating-Point Manipulation Functions
Sr.No |
Function & Description |
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) 它返回指定数字附近的模型数字的绝对间距 |
Bit Manipulation Functions
Sr.No |
Function & Description |
1 |
BIT_SIZE (I) 它返回模型的位数 |
2 |
BTEST (I, POS) Bit testing |
3 |
IAND (I, J) Logical AND |
4 |
IBCLR (I, POS) Clear bit |
5 |
IBITS (I, POS, LEN) 取位 |
6 |
IBSET (I, POS) Set bit |
7 |
IEOR (I, J) Exclusive OR |
8 |
IOR (I, J) Inclusive OR |
9 |
ISHFT (I, SHIFT) Logical shift |
10 |
ISHFTC (I, SHIFT [, SIZE]) 循环移位 |
11 |
NOT (I) Logical complement |
Character Functions
Sr.No |
Function & Description |
1 |
ACHAR (I) 返回 ASCII 整理序列中第 I 个字符。 |
2 |
ADJUSTL (STRING) 通过移除掉任何前导空格和插入尾随空格来调整字符串左方。 |
3 |
ADJUSTR (STRING) 通过移除掉尾随空格和插入前导空格来调整字符串右方。 |
4 |
CHAR (I [, KIND]) 返回机器特定整理序列中第 I 个字符。 |
5 |
IACHAR © 返回字符在 ASCII 整理序列中的位置。 |
6 |
ICHAR © 返回机器 (处理器) 特定整理序列中字符的位置。 |
7 |
INDEX (STRING, SUBSTRING [, BACK]) 返回 SUBSTRING 在 STRING 中最左边的 (如果 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) Repeated concatenation |
15 |
SCAN (STRING, SET [, BACK]) 返回 STRING 中最左边的 (如果 BACK 为 .TRUE.,则为最右边的) 字符在 SET 中的索引,如果一个也不属于 SET,则返回 0。 |
16 |
TRIM (STRING) 移除尾随空格字符 |
17 |
VERIFY (STRING, SET [, BACK]) 验证字符串中的一组字符 |