PROGRAM Main REAL, ALLOCATABLE, DIMENSION(:) :: X INTEGER :: n_elts, istat PRINT*, "How big is the array? " READ*, n_elts ALLOCATE(X(n_elts),STAT=istat) IF (istat .NE. 0) THEN PRINT*, "Allocation request failed" ELSE PRINT*, "Type in your ",n_elts," numbers" READ*, X PRINT*, "Std Dev = ", Std_Dev(X,n_elts) DEALLOCATE(X) END IF CONTAINS REAL FUNCTION Std_Dev(X,n_elts) INTEGER :: n_elts REAL, DIMENSION(:) :: x REAL :: mean mean = SUM(X)/REAL(n_elts) Std_Dev = SQRT(SUM((X-mean)**2)/REAL(n_elts)) END FUNCTION Std_Dev END PROGRAM MAIN
The results for the specified sequences are:
5.0 3.0 17.0 -7.56 78.1 99.99 0.8 11.7 33.8 29.6 Std Dev = 33.56556
and
1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 Std Dev = 4.031129