@@ -18,13 +18,7 @@ module function mean_1_${k1}$_${k1}$(x) result(res)
18
18
${t1}$, intent(in) :: x(:)
19
19
${t1}$ :: res
20
20
21
- integer :: i1
22
-
23
- res = 0.0_${k1}$
24
- do i1 = 1, size(x)
25
- res = res + x(i1)
26
- end do
27
- res = res / real(size(x), ${k1}$)
21
+ res = sum(x) / real(size(x), ${k1}$)
28
22
29
23
end function mean_1_${k1}$_${k1}$
30
24
#:endfor
@@ -51,15 +45,7 @@ module function mean_2_all_${k1}$_${k1}$(x) result(res)
51
45
${t1}$, intent(in) :: x(:,:)
52
46
${t1}$ :: res
53
47
54
- integer :: i1, i2
55
-
56
- res = 0.0_${k1}$
57
- do i2 = 1, size(x, 2)
58
- do i1 = 1, size(x, 1)
59
- res = res + x(i1, i2)
60
- end do
61
- end do
62
- res = res / real(size(x), ${k1}$)
48
+ res = sum(x) / real(size(x), ${k1}$)
63
49
64
50
end function mean_2_all_${k1}$_${k1}$
65
51
#:endfor
@@ -88,29 +74,15 @@ module function mean_2_${k1}$_${k1}$(x, dim) result(res)
88
74
integer, intent(in) :: dim
89
75
${t1}$ :: res(size(x)/size(x, dim))
90
76
91
- integer :: i1, i2
92
-
93
- res = 0.0_${k1}$
94
-
95
77
select case(dim)
96
78
case(1)
97
- do i2 = 1, size(x, 2)
98
- do i1 = 1, size(x, 1)
99
- res(i2) = res(i2) + x(i1, i2)
100
- end do
101
- end do
79
+ res = sum(x, 1) / real(size(x, 1), ${k1}$)
102
80
case(2)
103
- do i2 = 1, size(x, 2)
104
- do i1 = 1, size(x, 1)
105
- res(i1) = res(i1) + x(i1, i2)
106
- end do
107
- end do
81
+ res = sum(x, 2) / real(size(x, 2), ${k1}$)
108
82
case default
109
83
call error_stop("ERROR (mean): wrong dimension")
110
84
end select
111
85
112
- res = res / real(size(x, dim), ${k1}$)
113
-
114
86
end function mean_2_${k1}$_${k1}$
115
87
#:endfor
116
88
@@ -180,19 +152,7 @@ module function mean_${rank}$_all_${k1}$_${k1}$(x) result(res)
180
152
${t1}$, intent(in) :: x${ranksuffix(rank)}$
181
153
${t1}$ :: res
182
154
183
- integer :: ${varlist("i",1,rank)}$
184
-
185
- res = 0.0_${k1}$
186
-
187
- #:for fj in range(rank,0,-1)
188
- ${" "* (rank - fj)}$do i${varsuffix(fj)}$ = 1, size(x, ${fj}$)
189
- #:endfor
190
- ${" "* (rank)}$res = res + x(${varlist("i",1,rank)}$)
191
- #:for fj in range(rank,0,-1)
192
- ${" "* (fj-1)}$end do
193
- #:endfor
194
-
195
- res = res / real(size(x), ${k1}$)
155
+ res = sum(x) / real(size(x), ${k1}$)
196
156
197
157
end function mean_${rank}$_all_${k1}$_${k1}$
198
158
#:endfor
@@ -233,27 +193,15 @@ module function mean_${rank}$_${k1}$_${k1}$(x, dim) result(res)
233
193
#:endfor
234
194
merge(size(x,${rank-1}$),size(x,${rank}$),mask = ${rank-1}$ < dim ) )
235
195
236
- integer :: ${varlist("i",1,rank)}$
237
-
238
- res = 0.0_${k1}$
239
-
240
196
select case(dim)
241
197
#:for fi in range(1,rank+1)
242
198
case(${fi}$)
243
- #:for fj in range(rank,0,-1)
244
- ${" "* (rank - fj)}$do i${varsuffix(fj)}$ = 1, size(x, ${fj}$)
245
- #:endfor
246
- ${" "* (rank)}$res(${varlistskip("i", rank, fi)}$) = res(${varlistskip("i", rank, fi)}$) + x(${varlist("i",1,rank)}$)
247
- #:for fj in range(rank,0,-1)
248
- ${" "* (fj-1)}$end do
249
- #:endfor
199
+ res=sum(x, ${fi}$) / real(size(x, ${fi}$), ${k1}$)
250
200
#:endfor
251
201
case default
252
202
call error_stop("ERROR (mean): wrong dimension")
253
203
end select
254
204
255
- res = res / real(size(x, dim), ${k1}$)
256
-
257
205
end function mean_${rank}$_${k1}$_${k1}$
258
206
#:endfor
259
207
#:endfor
0 commit comments