﻿!     
!     履歴
!     2013/06/27 村橋 究理基　新規作成
program yenmass_double
implicit none

real(8) :: average   ! 平均
real(8) :: variance  ! 分散
real(8) :: variance2 ! 分散その2
real(8) :: sum       ! 和
real(8) :: data(30)  ! 元データ
integer :: i         ! ループ変数
integer :: nmax      ! データ総数

!initialize
nmax = 30
sum = 0.0d0
average = 0.0d0
variance = 0.0d0
variance2 = 0.0d0

! ファイル読み込み
open(10, file="1yen_data.dat", status="old")

do i = 1, nmax
   read(10, *) data(i)
enddo

close(10)

! 平均を計算する
do i = 1, nmax
   sum = sum + data(i)
enddo

average = sum / dble(nmax)

! 分散を計算する
sum = 0.0d0

do i = 1, nmax
   sum = sum + (data(i) * data(i))
enddo

variance = sum / dble(nmax)

variance = variance - (average * average)

! 分散を計算する その2
sum = 0.0d0

do i = 1, nmax
   sum = sum + (data(i) - average)**2
enddo

variance2 = sum / dble(nmax)

!結果の出力
write(*, *) 'average   = ', average
write(*, *) 'variance  = ', variance
write(*, *) 'variance2 = ', variance2

endprogram
