Fortran 简明教程

Fortran - Intrinsic Functions

本征函数是一些通用且重要的函数,它是 Fortran 语言的一部分。我们已经在“数组”、“字符”和“字符串”章节中讨论了一些这些函数。

本征函数可以分类为 -

  1. Numeric Functions

  2. Mathematical Functions

  3. Numeric Inquiry Functions

  4. Floating-Point Manipulation Functions

  5. Bit Manipulation Functions

  6. Character Functions

  7. Kind Functions

  8. Logical Functions

  9. Array Functions.

我们在“数组”章节中讨论了数组函数。在下一部分中,我们将提供其他类别的所有这些函数的简要说明。

在函数名列中,

  1. A 表示任何类型的数值变量

  2. R 表示实变量或整变量

  3. X 和 Y 表示实变量

  4. Z represents complex variable

  5. 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]) 验证字符串中的一组字符

Kind Functions

Sr.No

Function & Description

1

KIND (X) 返回类型参数值。

2

SELECTED_INT_KIND ® 它返回给定指数范围的种类类型参数。

3

SELECTED_REAL_KIND ([P, R]) 给定精度和范围的实际种类类型参数值

Logical Function

Sr.No

Function & Description

1

LOGICAL (L [, KIND]) 在具有不同种类类型参数的逻辑类型对象之间转换