Fortran - Reduction 函数
下表描述了Reduction(归约)函数:
函数 | 描述 |
---|---|
all(mask, dim) | 它返回一个逻辑值,指示 mask 中的所有关系是否均为 .true.,如果给出了第二个参数,则仅返回所需的维度。 |
any(mask, dim) | 它返回一个逻辑值,指示 mask 中的任何关系是否为 .true.,如果给出了第二个参数,则仅返回所需的维度。 |
count(mask, dim) | 它返回一个数值,即 mask 中为 .true. 的关系的数量,如果给出第二个参数,则仅返回所需的维度。 |
maxval(array, dim, mask) | 它返回数组中遵守第三个参数掩码中关系的最大值(如果给出了第三个参数掩码),如果给出了第二个参数 dim,则仅返回所需的维度。 |
minval(array, dim, mask) | 它返回数组中遵守第三个参数掩码中关系的最小值(如果给出了第三个参数掩码),如果给出了第二个参数 DIM,则仅返回所需的维度。 |
product(array, dim, mask) | 它返回数组 array 中所有元素的乘积,这些元素遵守第三个参数 mask 中的关系(如果给出了第三个参数 mask),如果给出了第二个参数 dim,则仅返回所需的维度。 |
sum (array, dim, mask) | 它返回数组数组中所有元素的总和,这些元素遵守第三个参数掩码中的关系(如果给出了第三个参数掩码),如果给出了第二个参数暗淡,则仅返回所需的维度。 |
示例
以下示例演示了这个概念:
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