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

实例
  1. program numericFunctions
  2. implicit none
  3. ! define constants
  4. ! define variables
  5. real :: a, b
  6. complex :: z
  7. ! values for a, b
  8. a = 15.2345
  9. b = -20.7689
  10. write(*,*) 'abs(a): ',abs(a),' abs(b): ',abs(b)
  11. write(*,*) 'aint(a): ',aint(a),' aint(b): ',aint(b)
  12. write(*,*) 'ceiling(a): ',ceiling(a),' ceiling(b): ',ceiling(b)
  13. write(*,*) 'floor(a): ',floor(a),' floor(b): ',floor(b)
  14. z = cmplx(a, b)
  15. write(*,*) 'z: ',z
  16. end program numericFunctions

结果为:

  1. abs(a): 15.2344999 abs(b): 20.7688999
  2. aint(a): 15.0000000 aint(b): -20.0000000
  3. ceiling(a): 16 ceiling(b): -20
  4. floor(a): 15 floor(b): -21
  5. 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

  1. program projectileMotion
  2. implicit none
  3. ! define constants
  4. real, parameter :: g = 9.8
  5. real, parameter :: pi = 3.1415927
  6. !define variables
  7. real :: a, t, u, x, y
  8. !values for a, t, and u
  9. a = 45.0
  10. t = 20.0
  11. u = 10.0
  12. ! convert angle to radians
  13. a = a * pi / 180.0
  14. x = u * cos(a) * t
  15. y = u * sin(a) * t - 0.5 * g * t * t
  16. write(*,*) 'x: ',x,' y: ',y
  17. end program projectileMotion

结果为:

  1. 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])

它返回 STRINGSUBSTRING 的最左侧(如果 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])

它返回属于 SETSTRING 字符的最左侧(如果 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])

在具有不同种类类型参数的逻辑类型对象之间进行转换

分类导航