next up previous
Next: MOD/MODULO(a,p) Up: 函数/FORTRAN表現早見表 Previous: MINLOC/MAXLOC(array,[dim],mask)

SUM(array,[dim],mask)/SIZE(array,[dim])/COUNT([dim],mask)

配列の要素の総和を計算する。dimを指定するとその次元に対する総和を計算す る。
SIZEは配列の要素数を返す。
COUNTはmask条件を満たす配列の要素数 を返す。


\begin{lstlisting}
real(4) :: a(2,2) = reshape( (/ 3.0, 4.0, 2.0, 8.0 /), (/ 2,...
...print *, sum(a,dim=2) !! 7.0 10.0 ; a(1,1)+a(1,2) a(2,1)+a(2,2)
\end{lstlisting}

実用例としては、平均値の計算。コード上では、ゼロ割に注意。
\begin{lstlisting}
print *, sum(a)/size(a) !! no condition
print *, sum(a,mask=a>3.0)/count(mask=a>3.0) !! with a condition
\end{lstlisting}

maskなしの場合の等価なFortran77表現。
\begin{lstlisting}
real(4) :: a(2,2) = reshape( (/ 3.0, 4.0, 2.0, 8.0 /), (/ 2,...
...
do j = 1, 2
do i = 1, 2
sum = sum + a(i,j)
end do
end do
\end{lstlisting}

maskありの場合の等価なFortran77表現。
\begin{lstlisting}
real(4) :: a(2,2) = reshape( (/ 3.0, 4.0, 2.0, 8.0 /), (/ 2,...
...(i,j) > 3.0 ) then
sum = sum + a(i,j)
end if
end do
end do
\end{lstlisting}



Masaru Inatsu
平成18年3月17日