@@ -11,37 +11,37 @@ program test_mean
11
11
real (dp), allocatable :: d3(:, :, :)
12
12
real (dp), allocatable :: d4(:, :, :, :)
13
13
14
+
14
15
! sp
15
- call loadtxt(" array1 .dat" , s)
16
+ call loadtxt(" array3 .dat" , s)
16
17
17
- call assert( mean(s) - 4.5_sp == 0.0_sp )
18
- call assert(sum ( mean(s, dim = 1 ) - [ 4.0_sp , 5.0_sp ] ) == 0.0_sp )
19
- call assert(sum ( mean(s, dim = 2 ) - [ 1.5_sp , 3.5_sp , 5.5_sp , 7.5_sp ] ) == 0.0_sp )
18
+ call assert( mean(s) - sum (s) / real ( size (s), sp) == 0.0_sp )
19
+ call assert( sum ( abs ( mean(s,1 ) - sum (s, 1 ) / real ( size (s, 1 ), sp) ) ) == 0.0_sp )
20
+ call assert( sum ( abs ( mean(s,2 ) - sum (s, 2 ) / real ( size (s, 2 ), sp) ) ) == 0.0_sp )
20
21
21
- call assert( size (mean(s, dim = 1 ))- size (sum (s, dim = 1 )) == 0 )
22
- call assert( size (mean(s, dim = 2 ))- size (sum (s, dim = 2 )) == 0 )
23
22
24
23
! dp
25
- call loadtxt(" array1.dat" , d)
24
+ call loadtxt(" array3.dat" , d)
25
+
26
+ call assert( mean(d) - sum (d)/ real (size (d), dp) == 0.0_dp )
27
+ call assert( sum ( abs ( mean(d,1 ) - sum (d,1 )/ real (size (d,1 ), dp) )) == 0.0_dp )
28
+ call assert( sum ( abs ( mean(d,2 ) - sum (d,2 )/ real (size (d,2 ), dp) )) == 0.0_dp )
26
29
27
- call assert(mean(d) - 4.5_dp == 0.0_dp )
28
- call assert(sum ( mean(d, dim = 1 ) - [4.0_dp , 5.0_dp ] ) == 0.0_dp )
29
- call assert(sum ( mean(d, dim = 2 ) - [1.5_dp , 3.5_dp , 5.5_dp , 7.5_dp ] ) == 0.0_dp )
30
30
31
31
! int32
32
- call loadtxt(" array1 .dat" , s )
32
+ call loadtxt(" array3 .dat" , d )
33
33
34
- call assert( mean(int (s , int32)) - 4.5_dp == 0.0_dp )
35
- call assert(sum ( mean(int (s , int32), dim = 1 ) - [ 4.0_dp , 5.0_dp ] ) == 0.0_dp )
36
- call assert(sum ( mean(int (s , int32), dim = 2 ) - [ 1.5_dp , 3.5_dp , 5.5_dp , 7.5_dp ] ) == 0.0_dp )
34
+ call assert( mean(int (d , int32)) - sum ( real ( int (d, int32),dp)) / real ( size (d), dp) == 0.0_dp )
35
+ call assert( sum (abs ( mean(int (d , int32),1 ) - sum ( real ( int (d, int32),dp), 1 ) / real ( size (d, 1 ), dp) ) ) == 0.0_dp )
36
+ call assert( sum (abs ( mean(int (d , int32),2 ) - sum ( real ( int (d, int32),dp), 2 ) / real ( size (d, 2 ), dp) ) ) == 0.0_dp )
37
37
38
- ! int64
39
- call loadtxt(" array1.dat" , s)
40
38
41
- call assert( mean(int (s, int64)) - 4.5_dp == 0.0_dp )
42
- call assert(sum ( mean(int (s, int64), dim = 1 ) - [4.0_dp , 5.0_dp ] ) == 0.0_dp )
43
- call assert(sum ( mean(int (s, int64), dim = 2 ) - [1.5_dp , 3.5_dp , 5.5_dp , 7.5_dp ] ) == 0.0_dp )
39
+ ! int64
40
+ call loadtxt(" array3.dat" , d)
44
41
42
+ call assert( mean(int (d, int64)) - sum (real (int (d, int64),dp))/ real (size (d), dp) == 0.0_dp )
43
+ call assert( sum (abs ( mean(int (d, int64),1 ) - sum (real (int (d, int64),dp),1 )/ real (size (d,1 ), dp) )) == 0.0_dp )
44
+ call assert( sum (abs ( mean(int (d, int64),2 ) - sum (real (int (d, int64),dp),2 )/ real (size (d,2 ), dp) )) == 0.0_dp )
45
45
46
46
47
47
! dp rank 3
@@ -50,38 +50,25 @@ program test_mean
50
50
d3(:,:,2 )= d* 1.5_dp ;
51
51
d3(:,:,3 )= d* 4._dp ;
52
52
53
- call assert( sum ( shape (mean(d3,1 ))- shape (sum (d3,1 )) ) == 0 )
54
- call assert( sum ( shape (mean(d3,2 ))- shape (sum (d3,2 )) ) == 0 )
55
- call assert( sum ( shape (mean(d3,3 ))- shape (sum (d3,3 )) ) == 0 )
56
-
57
- call assert( mean(d3) - sum (d3)/ size (d3) == 0.0_dp )
58
- call assert( sum (abs ( mean(d3,1 ) - &
59
- reshape ([4.0_dp , 5.0_dp , 6.0_dp , 7.5_dp , 16.0_dp , 20.0_dp ], shape (sum (d3,1 ))) ) ) &
60
- == 0.0_dp )
61
- call assert( sum (abs ( mean(d3,2 ) - &
62
- reshape ([ 1.5_dp , 3.5_dp , 5.5_dp , 7.5_dp , &
63
- 2.25_dp , 5.25_dp , 8.25_dp , 11.25_dp , &
64
- 6._dp , 14._dp , 22._dp , 30._dp &
65
- ], shape (sum (d3,2 ))) ) ) &
66
- == 0.0_dp )
67
- call assert( sum (abs ( mean(d3,3 ) - &
68
- reshape ([2.1666666666666665_dp , 6.5_dp , 10.833333333333334_dp ,&
69
- 15.166666666666666_dp , 4.333333333333333_dp , &
70
- 8.6666666666666661_dp , 13.0_dp , 17.333333333333332_dp &
71
- ], shape (sum (d3,3 ))) ) ) &
72
- == 0.0_dp )
53
+ call assert( mean(d3) - sum (d3)/ real (size (d3), dp) == 0.0_dp )
54
+ call assert( sum ( abs ( mean(d3,1 ) - sum (d3,1 )/ real (size (d3,1 ), dp) )) == 0.0_dp )
55
+ call assert( sum ( abs ( mean(d3,2 ) - sum (d3,2 )/ real (size (d3,2 ), dp) )) == 0.0_dp )
56
+ call assert( sum ( abs ( mean(d3,3 ) - sum (d3,3 )/ real (size (d3,3 ), dp) )) == 0.0_dp )
57
+
58
+
73
59
! dp rank 4
74
60
allocate (d4(size (d,1 ),size (d,2 ),3 ,9 ))
75
61
d4 = 1 .
76
62
d4(:,:,1 ,1 )= d;
77
63
d4(:,:,2 ,1 )= d* 1.5_dp ;
78
64
d4(:,:,3 ,1 )= d* 4._dp ;
65
+ d4(:,:,3 ,9 )= d* 4._dp ;
79
66
80
- call assert( sum ( shape ( mean(d4, 1 )) - shape ( sum (d4, 1 )) ) == 0 )
81
- call assert( sum ( shape ( mean(d4,2 )) - shape ( sum (d4,2 )) ) == 0 )
82
- call assert( sum ( shape ( mean(d4,3 )) - shape ( sum (d4,3 )) ) == 0 )
83
- call assert( sum ( shape ( mean(d4,4 )) - shape ( sum (d4,4 )) ) == 0 )
84
-
67
+ call assert( mean(d4) - sum (d4) / real ( size (d4), dp ) == 0.0_dp )
68
+ call assert( sum ( abs ( mean(d4,1 ) - sum (d4,1 ) / real ( size (d4, 1 ), dp) )) == 0.0_dp )
69
+ call assert( sum ( abs ( mean(d4,2 ) - sum (d4,2 ) / real ( size (d4, 2 ), dp) )) == 0.0_dp )
70
+ call assert( sum ( abs ( mean(d4,3 ) - sum (d4,3 ) / real ( size (d4, 3 ), dp) )) == 0.0_dp )
71
+ call assert( sum ( abs ( mean(d4, 4 ) - sum (d4, 4 ) / real ( size (d4, 4 ), dp) )) == 0.0_dp )
85
72
86
73
contains
87
74
0 commit comments