[Dart-dev] [6957] DART/trunk/random_seq/test_gaussian.f90: update test to try different means, standard deviations
nancy at ucar.edu
nancy at ucar.edu
Tue Apr 29 13:36:06 MDT 2014
Revision: 6957
Author: nancy
Date: 2014-04-29 13:36:06 -0600 (Tue, 29 Apr 2014)
Log Message:
-----------
update test to try different means, standard deviations
passed into the gaussian generator, and print out the
differences between the expected and computed standard deviations.
Modified Paths:
--------------
DART/trunk/random_seq/test_gaussian.f90
-------------- next part --------------
Modified: DART/trunk/random_seq/test_gaussian.f90
===================================================================
--- DART/trunk/random_seq/test_gaussian.f90 2014-04-29 18:54:01 UTC (rev 6956)
+++ DART/trunk/random_seq/test_gaussian.f90 2014-04-29 19:36:06 UTC (rev 6957)
@@ -7,7 +7,7 @@
program test_gaussian
! test the gaussian distribution random number generator routine
-! with different means, standard deviations, and iterations.
+! with different means, standard deviations, and iteration counts.
use types_mod, only : r8
use utilities_mod, only : register_module, &
@@ -25,42 +25,58 @@
type (random_seq_type) :: r
integer :: i, j, n
real(r8) :: r1, sqdist, mean_sqdist
-real(r8) :: mean, sd
+real(r8) :: mean, sd, var, compvar, compsd, compdiff
+character(len=50) :: formf = '(I12,2(F14.6),1(F24.16),2(F12.6))'
+
type t_inputs
- real(r8) :: m
- real(r8) :: stddev
- integer :: nreps
+ real(r8) :: t_mean
+ real(r8) :: t_stddev
+ integer :: t_nreps
end type
! to add more tests or change the parameters, specify a test count
-! and update the sets of (mean, stddev, repeatcount) here:
+! and update the sets of (mean, stddev, sample size) here:
-integer, parameter :: ntests = 10
+integer, parameter :: ntests = 21
type(t_inputs) :: t(ntests) = (/ &
- t_inputs(0.0_r8, 1.0_r8, 1000), &
- t_inputs(0.0_r8, 1.0_r8, 1000000), &
- t_inputs(0.0_r8, 1.0_r8, 100000000), &
- t_inputs(1.0_r8, 5.0_r8, 100000000), &
- t_inputs(1.0_r8, 5.0_r8, 10000), &
- t_inputs(6.0_r8, 1.0_r8, 100000000), &
- t_inputs(6.0_r8, 8.0_r8, 10000), &
- t_inputs(6.0_r8, 8.0_r8, 1000000), &
- t_inputs(6.0_r8, 8.0_r8, 100000000), &
- t_inputs(0.0_r8, 8.0_r8, 100000000) /)
+ t_inputs( 0.0_r8, 1.0_r8, 100), &
+ t_inputs( 0.0_r8, 1.0_r8, 10000), &
+ t_inputs( 0.0_r8, 1.0_r8, 1000000), &
+ t_inputs( 0.0_r8, 1.0_r8, 100000000), &
+ t_inputs( 1.0_r8, 5.0_r8, 100), &
+ t_inputs( 1.0_r8, 5.0_r8, 10000), &
+ t_inputs( 1.0_r8, 5.0_r8, 1000000), &
+ t_inputs( 1.0_r8, 5.0_r8, 100000000), &
+ t_inputs( 6.0_r8, 8.0_r8, 1000000), &
+ t_inputs(-86.0_r8, 8.0_r8, 1000000), &
+ t_inputs( 0.6_r8, 8.0_r8, 1000000), &
+ t_inputs( -6.0_r8, 8.0_r8, 1000000), &
+ t_inputs(956.0_r8, 8.0_r8, 1000000), &
+ t_inputs( 36.0_r8, 8.0_r8, 1000000), &
+ t_inputs( 6.0_r8, 1.0_r8, 1000000), &
+ t_inputs( 6.0_r8, 18.0_r8, 1000000), &
+ t_inputs( 6.0_r8, 99.0_r8, 1000000), &
+ t_inputs( 6.0_r8, 0.1_r8, 1000000), &
+ t_inputs( 6.0_r8, 0.8_r8, 1000000), &
+ t_inputs( 6.0_r8, 0.5_r8, 1000000), &
+ t_inputs( 6.0_r8, 33.5_r8, 1000000) /)
call initialize_utilities('test_random')
call register_module(source,revision,revdate)
+write(*, *) ''
+write(*, *) 'sample size input mean & std dev computed std dev diff % diff '
+write(*, *) ''
do j=1, ntests
call init_random_seq(r, 5)
- mean = t(j)%m
- sd = t(j)%stddev
- n = t(j)%nreps
+ mean = t(j)%t_mean
+ sd = t(j)%t_stddev
+ n = t(j)%t_nreps
mean_sqdist = 0.0_r8
@@ -69,8 +85,11 @@
sqdist = (mean-r1)**2
mean_sqdist = mean_sqdist + sqdist
end do
- write(*, *) 'input mean, sd, n = ', mean, sd, n
- write(*, *) 'resulting var is ', sqrt(mean_sqdist / n)
+
+ compvar = mean_sqdist / n
+ compsd = sqrt(compvar)
+ compdiff = compsd - sd
+ write(*, formf) n, mean, sd, compsd, compdiff, abs(compdiff/sd) * 100._r8
enddo
More information about the Dart-dev
mailing list