Cumulative standard deviation: Difference between revisions

Content added Content deleted
Line 602:
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}}==