Fortran - Funciones de reducción

La siguiente tabla describe las funciones de reducción:

Función Descripción
todo (máscara, tenue) Devuelve un valor lógico que indica si todas las relaciones en la máscara son verdaderas, junto con solo la dimensión deseada si se proporciona el segundo argumento.
cualquiera (máscara, tenue) Devuelve un valor lógico que indica si alguna relación en la máscara es .verdadero, junto con solo la dimensión deseada si se proporciona el segundo argumento.
count (máscara, tenue) Devuelve un valor numérico que es el número de relaciones en la máscara que son verdaderas, junto con solo la dimensión deseada si se proporciona el segundo argumento.
maxval (matriz, atenuación, máscara) Devuelve el valor más grande en la matriz de matriz, de los que obedecen a la relación en la máscara del tercer argumento, si se da esa, junto con solo la dimensión deseada si se da el segundo argumento dim.
minval (matriz, atenuación, máscara) Devuelve el valor más pequeño en la matriz de matriz, de los que obedecen a la relación en la máscara del tercer argumento, si se da, junto con solo la dimensión deseada si se proporciona el segundo argumento DIM.
producto (matriz, atenuado, máscara) Devuelve el producto de todos los elementos en la matriz de matriz, de aquellos que obedecen a la relación en la máscara del tercer argumento, si se da, junto con solo la dimensión deseada si se da el segundo argumento dim.
suma (matriz, tenue, máscara) Devuelve la suma de todos los elementos en la matriz de matriz, de aquellos que obedecen a la relación en la máscara del tercer argumento, si se da, junto con solo la dimensión deseada si se da el segundo argumento dim.

Example

El siguiente ejemplo demuestra el concepto:

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

F
T
5
F

Example

El siguiente ejemplo demuestra el concepto:

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

Cuando se compila y ejecuta el código anterior, produce el siguiente resultado:

33.0000000    
12.0000000    
121.000000    
47900160.0