Fortran - 归约函数


下表描述了归约函数:

功能 描述
全部(掩模,暗淡) 它返回一个逻辑值,指示 mask 中的所有关系是否均为 .true.,如果给出了第二个参数,则仅返回所需的维度。
任意(掩码、暗淡) 它返回一个逻辑值,指示 mask 中的任何关系是否为 .true.,如果给出第二个参数,则仅返回所需的维度。
计数(掩码,暗淡) 它返回一个数值,该数值是 mask 中为 .true. 的关系的数量,如果给出第二个参数,则仅返回所需的维度。
maxval(数组,暗淡,掩码) 它返回数组中遵守第三个参数掩码中关系的最大值(如果给出了第三个参数掩码),如果给出了第二个参数 dim,则仅返回所需的维度。
minval(数组,暗淡,掩码) 它返回数组中遵守第三个参数掩码中关系的最小值(如果给出了第三个参数掩码),如果给出了第二个参数 DIM,则仅返回所需的维度。
产品(数组、暗淡、掩模) 它返回数组 array 中所有元素的乘积,这些元素遵守第三个参数 mask 中的关系(如果给出了第三个参数 mask),如果给出了第二个参数 dim,则仅返回所需的维度。
总和(数组、暗淡、掩码) 它返回数组 array 中所有元素的总和,这些元素遵守第三个参数 mask 中的关系(如果给出了第三个参数 mask),如果给出了第二个参数 dim,则仅返回所需的维度。

例子

下面的例子演示了这个概念:

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

例子

下面的例子演示了这个概念:

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  
fortran_arrays.htm