前回使ったmatmulは配列で使える関数でしたが、他にも配列用関数はあります。
今回は、sumを使ってみます。
まずはsumを使わないプログラムです。
takk@deb9:~$ cat func-sum1.f90
program main
integer a(5),s
data a /1,2,3,4,5/
s = 0
do i = 1,5
s = s + a(i)
end do
write(*,*) s
stop
end
takk@deb9:~$ gfortran func-sum1.f90
takk@deb9:~$ ./a.out
15
takk@deb9:~$
1~5までの和なので結果は15で合ってますね。
takk@deb9:~$ cat func-sum2.f90
program main
integer a(5)
data a /1,2,3,4,5/
write(*,*) sum(a)
stop
end
takk@deb9:~$
ものすごく簡単になりました。
結果はこれです。
takk@deb9:~$ gfortran func-sum2.f90
takk@deb9:~$ ./a.out
15
takk@deb9:~$
配列の要素の総和ですので、初期化されていない要素があるとこういうことになります。
takk@deb9:~$ cat func-sum3.f90
program main
integer a(10)
a(1)=1
a(2)=2
a(3)=3
a(4)=4
a(5)=5
write(*,*) sum(a)
stop
end
takk@deb9:~$ gfortran func-sum3.f90
takk@deb9:~$ ./a.out
65442
takk@deb9:~$
初期化されていない値と計算されて、よく分からない結果になりました。
このようなときは、計算したい要素の範囲を指定すればよいです。
takk@deb9:~$ cat func-sum4.f90
program main
integer a(10)
a(1)=1
a(2)=2
a(3)=3
a(4)=4
a(5)=5
write(*,*) sum(a(1:5))
stop
end
takk@deb9:~$ gfortran func-sum4.f90
takk@deb9:~$ ./a.out
15
takk@deb9:~$



コメント