Cumulative standard deviation: Difference between revisions

Content added Content deleted
Line 602: Line 602:
end program Test_Stddev</lang>
end program Test_Stddev</lang>


===Using built-in array awareness===
This uses Fortran's built-in array features (which aren't available in C)

{{works with|Fortran|95 and later}}

<lang fortran>
program stats
implicit none

integer, parameter :: N = 8
integer :: data(N)
real(8) :: mean
real(8) :: std_dev1, std_dev2

! Set the data
data = [2,4,4,4,5,5,7,9]

! Use intrinsic function 'sum' to calculate the mean
mean = sum(data)/N

! Method1:
! Calculate the standard deviation directly from the definition
std_dev1 = sqrt(sum((data - mean)**2)/N)

! Method 2:
! Use the alternative version that is less susceptible to rounding error
std_dev2 = sqrt(sum(data**2)/N - mean**2)

write(*,'(a,8i2)') 'Data = ',data
write(*,'(a,f3.1)') 'Mean = ',mean
write(*,'(a,f3.1)') 'Standard deviation (method 1) = ',std_dev1
write(*,'(a,f3.1)') 'Standard deviation (method 2) = ',std_dev2

end program stats
</lang>


=={{header|Haskell}}==
=={{header|Haskell}}==