Fortran - 内在函数


内部函数是作为 Fortran 语言的一部分提供的一些常见且重要的函数。我们已经在数组、字符和字符串章节中讨论了其中一些函数。

内在函数可以分类为 -

  • 数值函数
  • 数学函数
  • 数值查询功能
  • 浮点运算函数
  • 位操作函数
  • 字符功能
  • 种类功能
  • 逻辑函数
  • 数组函数。

我们已经在数组一章中讨论了数组函数。在下一节中,我们将简要描述其他类别的所有这些功能。

在函数名称栏中,

  • A 代表任意类型的数值变量
  • R代表实数或整数变量
  • X和Y代表实数变量
  • Z代表复变量
  • W 代表实数或复数变量

数值函数

先生编号 功能说明
1

ABS(一)

它返回 A 的绝对值

2

艾玛格 (Z)

它返回复数 Z 的虚部

3

AINT(A [,种类])

它将 A 的小数部分截断为零,返回一个实数、整数。

4

ANINT(A [,KIND])

它返回一个实数值,最接近的整数或整数。

5

天花板(A [,种类])

它返回大于或等于数字 A 的最小整数。

6

CMPLX (X [, Y, 种类])

它将实数变量X和Y转换为复数X+iY;如果 Y 不存在,则使用 0。

7

连接 (Z)

它返回任何复数 Z 的复共轭。

8

双低功耗 (A)

它将 A 转换为双精度实数。

9

暗淡(X,Y)

它返回 X 和 Y 的正差。

10

DPROD(X,Y)

它返回 X 和 Y 的双精度实数乘积。

11

地板(A [,种类])

它提供小于或等于数字 A 的最大整数。

12

INT(A [,种类])

它将数字(实数或整数)转换为整数,将实部截断为零。

13

最大(A1,A2 [,A3,...])

它返回参数的最大值,所有参数都具有相同的类型。

14

最小值(A1,A2 [,A3,...])

它返回参数的最小值,所有参数都具有相同的类型。

15

MOD(A、P)

它返回 A 除以 P 的余数,两个参数的类型相同 (A-INT(A/P)*P)

16

模(A,P)

它返回 A 模 P:(A-FLOOR(A/P)*P)

17 号

NINT(A [,种类])

它返回数字 A 最接近的整数

18

真实(A [,种类])

它转换为真实类型

19

标志(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

阿科斯 (X)

它返回 (0, π) 范围内的反余弦值(以弧度为单位)。

2

阿信 (X)

它返回 (-π/2, π/2) 范围内的反正弦值(以弧度表示)。

3

阿坦 (X)

它返回 (-π/2, π/2) 范围内的反正切值(以弧度表示)。

4

ATAN2(Y,X)

它返回 (-π, π) 范围内的反正切值(以弧度表示)。

5

COS(X)

它返回以弧度为单位的参数的余弦值。

6

香港吸烟与健康委员会 (X)

它返回以弧度为单位的参数的双曲余弦。

7

经验 (X)

它返回 X 的指数值。

8

对数 (X)

它返回 X 的自然对数值。

9

LOG10 (X)

它返回 X 的常用对数值(以 10 为底)。

10

正弦 (X)

它返回以弧度表示的参数的正弦值。

11

辛赫 (X)

它返回以弧度为单位的参数的双曲正弦值。

12

平方根 (X)

它返回 X 的平方根。

13

谭 (X)

它返回以弧度为单位的参数的正切值。

14

正值 (X)

它返回以弧度表示的参数的双曲正切值。

例子

以下程序分别计算一段时间 t 后射弹的水平和垂直位置 x 和 y -

其中,x = ut cos a 且 y = ut 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

数字 (X)

它返回模型的有效位数。

2

厄普西隆 (X)

它返回的数字与 1 相比几乎可以忽略不计。换句话说,它返回 REAL( 1.0, KIND(X)) + EPSILON(X) 不等于 REAL( 1.0, KIND(X)) 的最小值。

3

巨大(X)

它返回模型中最大的数字

4

最大指数 (X)

它返回模型的最大指数

5

最小指数 (X)

它返回模型的最小指数

6

精度 (X)

它返回小数精度

7

基数 (X)

它返回模型的基础

8

范围 (X)

它返回十进制指数范围

9

小 (X)

它返回模型的最小正数

浮点运算函数

先生编号 功能说明
1

指数 (X)

它返回型号的指数部分

2

分数 (X)

它返回数字的小数部分

3

最近的 (X, S)

它返回给定方向上最接近的不同处理器编号

4

RR 间距 (X)

它返回给定数字附近的型号相对间距的倒数

5

比例 (X, I)

它将实数乘以其基数的整数次幂

6

SET_EXPONENT (X, I)

它返回数字的指数部分

7

间距 (X)

它返回给定数字附近型号的绝对间距

位操作函数

先生编号 功能说明
1

BIT_SIZE (一)

它返回模型的位数

2

最佳测试(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,转变)

逻辑移位

10

IHFTC(I,SHIFT [,大小])

循环移位

11

不是(我)

逻辑补语

字符功能

先生编号 功能说明
1

阿查尔(一)

它返回 ASCII 整理序列中的第 I 个字符。

2

调整(弦)

它通过删除任何前导空格并插入尾随空格来调整左侧的字符串

3

调节器(字符串)

它通过删除尾随空格并插入前导空格来正确调整字符串。

4

CHAR(我[,种类])

它返回机器特定整理序列中的第 I 个字符

5

伊阿查尔 (C)

它返回字符在 ASCII 整理序列中的位置。

6

伊查尔 (C)

它返回机器(处理器)特定整理序列中字符的位置。

7

索引(字符串,子字符串[,后])

它返回 STRING 中 SUBSTRING 的最左边(如果 BACK 为 .TRUE,则为最右边)的起始位置。

8

LEN(字符串)

它返回字符串的长度。

9

LEN_TRIM(字符串)

它返回不带尾随空白字符的字符串长度。

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

重复(字符串,NCOPIES)

重复串联

15

扫描(字符串,设置[,返回])

它返回属于 SET 的 STRING 的最左边(如果 BACK 为 .TRUE,则为最右边)字符的索引,如果不属于 SET,则返回 0。

16

修剪(字符串)

删除尾随空白字符

17 号

验证(字符串,设置[,返回])

验证字符串中的字符集

种类功能

先生编号 功能说明
1

种类 (X)

它返回kind类型参数值。

2

SELECTED_INT_KIND (R)

它返回指定指数范围的类型参数。

3

SELECTED_REAL_KIND ([P, R])

Real kind 类型参数值,给定精度和范围

逻辑函数

先生编号 功能说明
1

逻辑(L [,种类])

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