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

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

广告