|
1 | 1 | program test_mean
|
2 |
| -use stdlib_experimental_error, only: assert |
3 |
| -use stdlib_experimental_kinds, only: sp, dp, int32, int64 |
4 |
| -use stdlib_experimental_io, only: loadtxt |
5 |
| -use stdlib_experimental_stats, only: mean |
6 |
| -implicit none |
| 2 | + use stdlib_experimental_error, only: assert |
| 3 | + use stdlib_experimental_kinds, only: sp, dp, int32, int64 |
| 4 | + use stdlib_experimental_io, only: loadtxt |
| 5 | + use stdlib_experimental_stats, only: mean |
| 6 | + implicit none |
7 | 7 |
|
8 |
| -real(sp), parameter :: sptol = 1.2e-06_sp |
9 |
| -real(dp), parameter :: dptol = 2.2e-15_dp |
| 8 | + real(sp), parameter :: sptol = 1.2e-06_sp |
| 9 | + real(dp), parameter :: dptol = 2.2e-15_dp |
10 | 10 |
|
11 |
| -real(sp) :: s1(3) = [1.0_sp, 2.0_sp, 3.0_sp] |
| 11 | + real(sp) :: s1(3) = [1.0_sp, 2.0_sp, 3.0_sp] |
12 | 12 |
|
13 |
| -real(sp), allocatable :: s(:, :) |
14 |
| -real(dp), allocatable :: d(:, :) |
| 13 | + real(sp), allocatable :: s(:, :) |
| 14 | + real(dp), allocatable :: d(:, :) |
15 | 15 |
|
16 |
| -real(dp), allocatable :: d3(:, :, :) |
17 |
| -real(dp), allocatable :: d4(:, :, :, :) |
| 16 | + real(dp), allocatable :: d3(:, :, :) |
| 17 | + real(dp), allocatable :: d4(:, :, :, :) |
18 | 18 |
|
19 | 19 |
|
20 |
| -!sp |
21 |
| -call loadtxt("array3.dat", s) |
| 20 | + !sp |
| 21 | + call loadtxt("array3.dat", s) |
22 | 22 |
|
23 |
| -call assert( abs(mean(s) - sum(s)/real(size(s), sp)) < sptol) |
24 |
| -call assert( sum( abs( mean(s,1) - sum(s,1)/real(size(s,1), sp) )) < sptol) |
25 |
| -call assert( sum( abs( mean(s,2) - sum(s,2)/real(size(s,2), sp) )) < sptol) |
| 23 | + call assert( abs(mean(s) - sum(s)/real(size(s), sp)) < sptol) |
| 24 | + call assert( sum( abs( mean(s,1) - sum(s,1)/real(size(s,1), sp) )) < sptol) |
| 25 | + call assert( sum( abs( mean(s,2) - sum(s,2)/real(size(s,2), sp) )) < sptol) |
26 | 26 |
|
27 |
| -! check reduction of rank one array to scalar |
28 |
| -call assert(abs(mean(s1) - sum(s1) / real(size(s1), sp)) < sptol) |
29 |
| -call assert(abs(mean(s1, dim=1) - sum(s1, dim=1) / real(size(s1, dim=1), sp)) < sptol) |
| 27 | + ! check reduction of rank one array to scalar |
| 28 | + call assert(abs(mean(s1) - sum(s1) / real(size(s1), sp)) < sptol) |
| 29 | + call assert(abs(mean(s1, dim=1) - sum(s1, dim=1) / real(size(s1, dim=1), sp))& |
| 30 | + & < sptol) |
30 | 31 |
|
31 | 32 |
|
32 |
| -!dp |
33 |
| -call loadtxt("array3.dat", d) |
| 33 | + !dp |
| 34 | + call loadtxt("array3.dat", d) |
34 | 35 |
|
35 |
| -call assert( abs(mean(d) - sum(d)/real(size(d), dp)) < dptol) |
36 |
| -call assert( sum( abs( mean(d,1) - sum(d,1)/real(size(d,1), dp) )) < dptol) |
37 |
| -call assert( sum( abs( mean(d,2) - sum(d,2)/real(size(d,2), dp) )) < dptol) |
| 36 | + call assert( abs(mean(d) - sum(d)/real(size(d), dp)) < dptol) |
| 37 | + call assert( sum( abs( mean(d,1) - sum(d,1)/real(size(d,1), dp) )) < dptol) |
| 38 | + call assert( sum( abs( mean(d,2) - sum(d,2)/real(size(d,2), dp) )) < dptol) |
38 | 39 |
|
39 | 40 |
|
40 |
| -!int32 |
41 |
| -call loadtxt("array3.dat", d) |
| 41 | + !int32 |
| 42 | + call loadtxt("array3.dat", d) |
42 | 43 |
|
43 |
| -call assert( abs(mean(int(d, int32)) - sum(real(int(d, int32),dp))/real(size(d), dp)) < dptol) |
44 |
| -call assert( sum(abs( mean(int(d, int32),1) - sum(real(int(d, int32),dp),1)/real(size(d,1), dp) )) < dptol) |
45 |
| -call assert( sum(abs( mean(int(d, int32),2) - sum(real(int(d, int32),dp),2)/real(size(d,2), dp) )) < dptol) |
| 44 | + call assert( abs(mean(int(d, int32))& |
| 45 | + & - sum(real(int(d, int32),dp))/real(size(d), dp)) < dptol) |
| 46 | + call assert( sum(abs( mean(int(d, int32),1)& |
| 47 | + & - sum(real(int(d, int32),dp),1)/real(size(d,1), dp) )) < dptol) |
| 48 | + call assert(& |
| 49 | + & sum(abs( mean(int(d, int32),2) - sum(real(int(d, int32),dp),2)& |
| 50 | + & /real(size(d,2), dp) )) < dptol) |
46 | 51 |
|
47 | 52 |
|
48 |
| -!int64 |
49 |
| -call loadtxt("array3.dat", d) |
| 53 | + !int64 |
| 54 | + call loadtxt("array3.dat", d) |
50 | 55 |
|
51 |
| -call assert( abs(mean(int(d, int64)) - sum(real(int(d, int64),dp))/real(size(d), dp)) < dptol) |
52 |
| -call assert( sum(abs( mean(int(d, int64),1) - sum(real(int(d, int64),dp),1)/real(size(d,1), dp) )) < dptol) |
53 |
| -call assert( sum(abs( mean(int(d, int64),2) - sum(real(int(d, int64),dp),2)/real(size(d,2), dp) )) < dptol) |
| 56 | + call assert( abs(mean(int(d, int64)) - sum(real(int(d, int64),dp))& |
| 57 | + & / real(size(d), dp)) < dptol) |
| 58 | + call assert( sum(abs( mean(int(d, int64),1) - sum(real(int(d, int64),dp),1)& |
| 59 | + & / real(size(d,1), dp) )) < dptol) |
| 60 | + call assert( sum(abs( mean(int(d, int64),2) - sum(real(int(d, int64),dp),2)& |
| 61 | + & / real(size(d,2), dp) )) < dptol) |
54 | 62 |
|
55 | 63 |
|
56 |
| -!dp rank 3 |
57 |
| -allocate(d3(size(d,1),size(d,2),3)) |
58 |
| -d3(:,:,1)=d; |
59 |
| -d3(:,:,2)=d*1.5_dp; |
60 |
| -d3(:,:,3)=d*4._dp; |
| 64 | + !dp rank 3 |
| 65 | + allocate(d3(size(d,1),size(d,2),3)) |
| 66 | + d3(:,:,1)=d; |
| 67 | + d3(:,:,2)=d*1.5_dp; |
| 68 | + d3(:,:,3)=d*4._dp; |
61 | 69 |
|
62 |
| -call assert( abs(mean(d3) - sum(d3)/real(size(d3), dp)) < dptol) |
63 |
| -call assert( sum( abs( mean(d3,1) - sum(d3,1)/real(size(d3,1), dp) )) < dptol) |
64 |
| -call assert( sum( abs( mean(d3,2) - sum(d3,2)/real(size(d3,2), dp) )) < dptol) |
65 |
| -call assert( sum( abs( mean(d3,3) - sum(d3,3)/real(size(d3,3), dp) )) < dptol) |
| 70 | + call assert( abs(mean(d3) - sum(d3)/real(size(d3), dp)) < dptol) |
| 71 | + call assert( sum( abs( mean(d3,1) - sum(d3,1)/real(size(d3,1), dp) )) < dptol) |
| 72 | + call assert( sum( abs( mean(d3,2) - sum(d3,2)/real(size(d3,2), dp) )) < dptol) |
| 73 | + call assert( sum( abs( mean(d3,3) - sum(d3,3)/real(size(d3,3), dp) )) < dptol) |
66 | 74 |
|
67 | 75 |
|
68 |
| -!dp rank 4 |
69 |
| -allocate(d4(size(d,1),size(d,2),3,9)) |
70 |
| -d4 = 1. |
71 |
| -d4(:,:,1,1)=d; |
72 |
| -d4(:,:,2,1)=d*1.5_dp; |
73 |
| -d4(:,:,3,1)=d*4._dp; |
74 |
| -d4(:,:,3,9)=d*4._dp; |
| 76 | + !dp rank 4 |
| 77 | + allocate(d4(size(d,1),size(d,2),3,9)) |
| 78 | + d4 = 1. |
| 79 | + d4(:,:,1,1)=d; |
| 80 | + d4(:,:,2,1)=d*1.5_dp; |
| 81 | + d4(:,:,3,1)=d*4._dp; |
| 82 | + d4(:,:,3,9)=d*4._dp; |
75 | 83 |
|
76 |
| -call assert( abs(mean(d4) - sum(d4)/real(size(d4), dp)) < dptol) |
77 |
| -call assert( sum( abs( mean(d4,1) - sum(d4,1)/real(size(d4,1), dp) )) < dptol) |
78 |
| -call assert( sum( abs( mean(d4,2) - sum(d4,2)/real(size(d4,2), dp) )) < dptol) |
79 |
| -call assert( sum( abs( mean(d4,3) - sum(d4,3)/real(size(d4,3), dp) )) < dptol) |
80 |
| -call assert( sum( abs( mean(d4,4) - sum(d4,4)/real(size(d4,4), dp) )) < dptol) |
| 84 | + call assert( abs(mean(d4) - sum(d4)/real(size(d4), dp)) < dptol) |
| 85 | + call assert( sum( abs( mean(d4,1) - sum(d4,1)/real(size(d4,1), dp) )) < dptol) |
| 86 | + call assert( sum( abs( mean(d4,2) - sum(d4,2)/real(size(d4,2), dp) )) < dptol) |
| 87 | + call assert( sum( abs( mean(d4,3) - sum(d4,3)/real(size(d4,3), dp) )) < dptol) |
| 88 | + call assert( sum( abs( mean(d4,4) - sum(d4,4)/real(size(d4,4), dp) )) < dptol) |
81 | 89 |
|
82 |
| -end program |
| 90 | +end program test_mean |
0 commit comments