Fortran - 归约函数

  • 简述

    下表描述了归约函数:
    函数 描述
    all(mask, dim) 它返回一个逻辑值,指示掩码中的所有关系是否为 .true.,如果给出第二个参数,则仅返回所需的维度。
    any(mask, dim) 它返回一个逻辑值,指示掩码中的任何关系是否为 .true.,如果给出第二个参数,则仅返回所需的维度。
    count(mask, dim) 它返回一个数值,即掩码中为 .true. 的关系数,如果给出第二个参数,则仅返回所需的维度。
    maxval(array, dim, mask) 如果给出了第三个参数掩码中的关系,它返回数组数组中的最大值,如果给出第二个参数dim,则只返回所需的维度。
    minval(array, dim, mask) 如果给出了第三个参数掩码中的关系,它返回数组数组中的最小值,如果给出第二个参数 DIM,则仅返回所需的维度。
    product(array, dim, mask) 它返回数组数组中所有元素的乘积,如果给出了第三个参数掩码中的关系,则返回那些元素的乘积,如果给出第二个参数 dim,则仅返回所需的维度。
    sum (array, dim, mask) 如果给出了第三个参数掩码,它返回数组数组中所有元素的总和,如果给出第二个参数dim,则只返回所需的维度。
    Example
    以下示例演示了该概念:
    
    program arrayReduction
       real, dimension(3,2) :: a 
       a = reshape( (/5,9,6,10,8,12/), (/3,2/) ) 
       
       Print *, all(a>5)
       Print *, any(a>5)
       Print *, count(a>5)
       Print *, all(a>=5 .and. a<10)
      
    end program arrayReduction
    
    当上面的代码被编译并执行时,它会产生以下结果:
    
    F
    T
    5
    F
    
    Example
    以下示例演示了该概念:
    
    program arrayReduction
    implicit none
       real, dimension(1:6) :: a = (/ 21.0, 12.0,33.0, 24.0, 15.0, 16.0 /)
       Print *, maxval(a)
       Print *, minval(a)
       Print *, sum(a)
       Print *, product(a)
       
    end program arrayReduction 
    
    当上面的代码被编译并执行时,它会产生以下结果:
    
    33.0000000    
    12.0000000    
    121.000000    
    47900160.0