@@ -49,15 +49,15 @@ interface mean
49
49
module function mean_2_${k1}$_${k1}$(x, dim) result(res)
50
50
${t1}$, intent(in) :: x(:,:)
51
51
integer, intent(in) :: dim
52
- ${t1}$ :: res(size(x)/ size(x, dim))
52
+ ${t1}$ :: res(merge( size(x, 1), size(x, 2), mask = 1 < dim ))
53
53
end function mean_2_${k1}$_${k1}$
54
54
#:endfor
55
55
56
56
#:for i1, k1, t1 in ikti
57
57
module function mean_2_${k1}$_dp(x, dim) result(res)
58
58
${t1}$, intent(in) :: x(:,:)
59
59
integer, intent(in) :: dim
60
- real(dp) :: res(size(x)/ size(x, dim))
60
+ real(dp) :: res(merge( size(x, 1), size(x, 2), mask = 1 < dim ))
61
61
end function mean_2_${k1}$_dp
62
62
#:endfor
63
63
@@ -66,7 +66,9 @@ interface mean
66
66
#{if rank > 0}#(${":" + ",:" * (rank - 1)}$)#{endif}#
67
67
#:enddef
68
68
69
- #:if VERSION90
69
+ #:if defined('MAXRANK')
70
+ #:set ranks = range(3,MAXRANK+1)
71
+ #:elif VERSION90
70
72
#:set ranks = range(3,8)
71
73
#:else
72
74
#:set ranks = range(3,16)
@@ -75,47 +77,47 @@ interface mean
75
77
76
78
#:for i1, k1, t1 in iktr
77
79
#:for rank in ranks
78
- module function mean_${rank}$_all_${k1}$_${k1}$(x) result(res)
79
- ${t1}$, intent(in) :: x${ranksuffix(rank)}$
80
- ${t1}$ :: res
81
- end function mean_${rank}$_all_${k1}$_${k1}$
80
+ module function mean_${rank}$_all_${k1}$_${k1}$(x) result(res)
81
+ ${t1}$, intent(in) :: x${ranksuffix(rank)}$
82
+ ${t1}$ :: res
83
+ end function mean_${rank}$_all_${k1}$_${k1}$
82
84
#:endfor
83
85
#:endfor
84
86
85
87
#:for i1, k1, t1 in ikti
86
88
#:for rank in ranks
87
- module function mean_${rank}$_all_${k1}$_dp(x) result(res)
88
- ${t1}$, intent(in) :: x${ranksuffix(rank)}$
89
- real(dp) :: res
90
- end function mean_${rank}$_all_${k1}$_dp
89
+ module function mean_${rank}$_all_${k1}$_dp(x) result(res)
90
+ ${t1}$, intent(in) :: x${ranksuffix(rank)}$
91
+ real(dp) :: res
92
+ end function mean_${rank}$_all_${k1}$_dp
91
93
#:endfor
92
94
#:endfor
93
95
94
96
#:for i1, k1, t1 in iktr
95
97
#:for rank in ranks
96
- module function mean_${rank}$_${k1}$_${k1}$(x, dim) result(res)
97
- ${t1}$, intent(in) :: x${ranksuffix(rank)}$
98
- integer, intent(in) :: dim
99
- ${t1}$ :: res( &
98
+ module function mean_${rank}$_${k1}$_${k1}$(x, dim) result(res)
99
+ ${t1}$, intent(in) :: x${ranksuffix(rank)}$
100
+ integer, intent(in) :: dim
101
+ ${t1}$ :: res( &
100
102
#:for imerge in range(1,rank-1)
101
- merge(size(x,${imerge}$),size(x,${imerge + 1}$),mask = ${imerge}$ < dim ), &
103
+ merge(size(x,${imerge}$),size(x,${imerge + 1}$),mask = ${imerge}$ < dim ), &
102
104
#:endfor
103
- merge(size(x,${rank-1}$),size(x,${rank}$),mask = ${rank-1}$ < dim ) )
104
- end function mean_${rank}$_${k1}$_${k1}$
105
+ merge(size(x,${rank-1}$),size(x,${rank}$),mask = ${rank-1}$ < dim ) )
106
+ end function mean_${rank}$_${k1}$_${k1}$
105
107
#:endfor
106
108
#:endfor
107
109
108
110
#:for i1, k1, t1 in ikti
109
111
#:for rank in ranks
110
- module function mean_${rank}$_${k1}$_dp(x, dim) result(res)
111
- ${t1}$, intent(in) :: x${ranksuffix(rank)}$
112
- integer, intent(in) :: dim
113
- real(dp) :: res( &
112
+ module function mean_${rank}$_${k1}$_dp(x, dim) result(res)
113
+ ${t1}$, intent(in) :: x${ranksuffix(rank)}$
114
+ integer, intent(in) :: dim
115
+ real(dp) :: res( &
114
116
#:for imerge in range(1,rank-1)
115
- merge(size(x,${imerge}$),size(x,${imerge + 1}$),mask = ${imerge}$ < dim ), &
117
+ merge(size(x,${imerge}$),size(x,${imerge + 1}$),mask = ${imerge}$ < dim ), &
116
118
#:endfor
117
- merge(size(x,${rank-1}$),size(x,${rank}$),mask = ${rank-1}$ < dim ) )
118
- end function mean_${rank}$_${k1}$_dp
119
+ merge(size(x,${rank-1}$),size(x,${rank}$),mask = ${rank-1}$ < dim ) )
120
+ end function mean_${rank}$_${k1}$_dp
119
121
#:endfor
120
122
#:endfor
121
123
0 commit comments