0% found this document useful (0 votes)
62 views2 pages

Mean Variance

This program reads in an unknown number of real values and computes the mean, variance, and standard deviation using three subroutines: 1) Sums() calculates the sum and sum of squares of the inputs, 2) Results() computes the mean, variance, and standard deviation from the sum and sum of squares, and 3) PrintResult() displays the results.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
62 views2 pages

Mean Variance

This program reads in an unknown number of real values and computes the mean, variance, and standard deviation using three subroutines: 1) Sums() calculates the sum and sum of squares of the inputs, 2) Results() computes the mean, variance, and standard deviation from the sum and sum of squares, and 3) PrintResult() displays the results.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

!

--------------------------------------------------------------------
! PROGRAM MeanVariance:
! This program reads in an unknown number of real values and
! computes its mean, variance and standard deviation. It contains
! three subroutines:
! (1) Sums() - computes the sum and sum of squares of the input
! (2) Result() - computes the mean, variance and standard
! deviation from the sum and sum of squares
! (3) PrintResult() - print results
! --------------------------------------------------------------------

PROGRAM MeanVariance
IMPLICIT NONE

INTEGER :: Number, IOstatus


REAL :: Data, Sum, Sum2
REAL :: Mean, Var, Std

Number = 0 ! initialize the counter


Sum = 0.0 ! initialize accumulators
Sum2 = 0.0

DO ! loop until done


READ(*,*,IOSTAT=IOstatus) Data ! read in a value
IF (IOstatus < 0) EXIT ! if end-of-file reached, exit
Number = Number + 1 ! no, have one more value
WRITE(*,*) "Data item ", Number, ": ", Data
CALL Sums(Data, Sum, Sum2) ! accumulate the values
END DO

CALL Results(Sum, Sum2, Number, Mean, Var, Std) ! compute results


CALL PrintResult(Number, Mean, Var, Std) ! display them

CONTAINS

! --------------------------------------------------------------------
! SUBROUTINE Sums():
! This subroutine receives three REAL values:
! (1) x - the input value
! (2) Sum - x will be added to this sum-of-input
! (3) SumSQR - x*x is added to this sum-of-squares
! --------------------------------------------------------------------

SUBROUTINE Sums(x, Sum, SumSQR)


IMPLICIT NONE
REAL, INTENT(IN) :: x
REAL, INTENT(INOUT) :: Sum, SumSQR

Sum = Sum + x
SumSQR = SumSQR + x*x
END SUBROUTINE Sums

! --------------------------------------------------------------------
! SUBROUTINE Results():
! This subroutine computes the mean, variance and standard deviation
! from the sum and sum-of-squares:
! (1) Sum - sum of input values
! (2) SumSQR - sun-of-squares
! (3) n - number of input data items
! (4) Mean - computed mean value
! (5) Variance - computed variance
! (6) StdDev - computed standard deviation
! --------------------------------------------------------------------

SUBROUTINE Results(Sum, SumSQR, n, Mean, Variance, StdDev)


IMPLICIT NONE

INTEGER, INTENT(IN) :: n
REAL, INTENT(IN) :: Sum, SumSQR
REAL, INTENT(OUT) :: Mean, Variance, StdDev

Mean = Sum / n
Variance = (SumSQR - Sum*Sum/n)/(n-1)
StdDev = SQRT(Variance)
END SUBROUTINE

! --------------------------------------------------------------------
! SUBROUTINE PrintResults():
! This subroutine displays the computed results.
! --------------------------------------------------------------------

SUBROUTINE PrintResult(n, Mean, Variance, StdDev)


IMPLICIT NONE

INTEGER, INTENT(IN) :: n
REAL, INTENT(IN) :: Mean, Variance, StdDev

WRITE(*,*)
WRITE(*,*) "No. of data items = ", n
WRITE(*,*) "Mean = ", Mean
WRITE(*,*) "Variance = ", Variance
WRITE(*,*) "Standard Deviation = ", StdDev
END SUBROUTINE PrintResult

END PROGRAM MeanVariance

You might also like