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 = 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
    DIGITS (X)
    它返回模型的有效位数。
    2
    EPSILON (X)
    它返回与一相比几乎可以忽略不计的数字。换句话说,它返回最小值,使得 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])
    它返回属于 SET 的 STRING 的最左边(如果 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])
    real kind 类型参数值,给定精度和范围
  • 逻辑函数

    序号 功能说明
    1
    LOGICAL (L [, KIND])
    在具有不同类型参数的逻辑类型对象之间转换