Skip to content

Commit 7612613

Browse files
committed
stat_dev: add rank 3
1 parent 60ab523 commit 7612613

5 files changed

+533
-6
lines changed

src/stdlib_experimental_stat.f90

+90
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ module function mean_1_int64_dp(x) result(res)
4242
real(dp) :: res
4343
end function mean_1_int64_dp
4444

45+
4546
module function mean_2_all_sp_sp(x) result(res)
4647
real(sp), intent(in) :: x(:,:)
4748
real(sp) :: res
@@ -109,6 +110,95 @@ module function mean_2_int64_dp(x, dim) result(res)
109110
real(dp) :: res(size(x)/size(x, dim))
110111
end function mean_2_int64_dp
111112

113+
114+
module function mean_3_all_sp_sp(x) result(res)
115+
real(sp), intent(in) :: x(:,:,:)
116+
real(sp) :: res
117+
end function mean_3_all_sp_sp
118+
module function mean_3_all_dp_dp(x) result(res)
119+
real(dp), intent(in) :: x(:,:,:)
120+
real(dp) :: res
121+
end function mean_3_all_dp_dp
122+
module function mean_3_all_qp_qp(x) result(res)
123+
real(qp), intent(in) :: x(:,:,:)
124+
real(qp) :: res
125+
end function mean_3_all_qp_qp
126+
127+
module function mean_3_all_int8_dp(x) result(res)
128+
integer(int8), intent(in) :: x(:,:,:)
129+
real(dp) :: res
130+
end function mean_3_all_int8_dp
131+
module function mean_3_all_int16_dp(x) result(res)
132+
integer(int16), intent(in) :: x(:,:,:)
133+
real(dp) :: res
134+
end function mean_3_all_int16_dp
135+
module function mean_3_all_int32_dp(x) result(res)
136+
integer(int32), intent(in) :: x(:,:,:)
137+
real(dp) :: res
138+
end function mean_3_all_int32_dp
139+
module function mean_3_all_int64_dp(x) result(res)
140+
integer(int64), intent(in) :: x(:,:,:)
141+
real(dp) :: res
142+
end function mean_3_all_int64_dp
143+
144+
module function mean_3_sp_sp(x, dim) result(res)
145+
real(sp), intent(in) :: x(:,:,:)
146+
integer, intent(in) :: dim
147+
integer :: j_
148+
real(sp) :: res( &
149+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
150+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
151+
end function mean_3_sp_sp
152+
module function mean_3_dp_dp(x, dim) result(res)
153+
real(dp), intent(in) :: x(:,:,:)
154+
integer, intent(in) :: dim
155+
integer :: j_
156+
real(dp) :: res( &
157+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
158+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
159+
end function mean_3_dp_dp
160+
module function mean_3_qp_qp(x, dim) result(res)
161+
real(qp), intent(in) :: x(:,:,:)
162+
integer, intent(in) :: dim
163+
integer :: j_
164+
real(qp) :: res( &
165+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
166+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
167+
end function mean_3_qp_qp
168+
169+
module function mean_3_int8_dp(x, dim) result(res)
170+
integer(int8), intent(in) :: x(:,:,:)
171+
integer, intent(in) :: dim
172+
integer :: j_
173+
real(dp) :: res( &
174+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
175+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
176+
end function mean_3_int8_dp
177+
module function mean_3_int16_dp(x, dim) result(res)
178+
integer(int16), intent(in) :: x(:,:,:)
179+
integer, intent(in) :: dim
180+
integer :: j_
181+
real(dp) :: res( &
182+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
183+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
184+
end function mean_3_int16_dp
185+
module function mean_3_int32_dp(x, dim) result(res)
186+
integer(int32), intent(in) :: x(:,:,:)
187+
integer, intent(in) :: dim
188+
integer :: j_
189+
real(dp) :: res( &
190+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
191+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
192+
end function mean_3_int32_dp
193+
module function mean_3_int64_dp(x, dim) result(res)
194+
integer(int64), intent(in) :: x(:,:,:)
195+
integer, intent(in) :: dim
196+
integer :: j_
197+
real(dp) :: res( &
198+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
199+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
200+
end function mean_3_int64_dp
201+
112202
end interface
113203

114204
end module

src/stdlib_experimental_stat.fypp.f90

+38
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ module function mean_1_${k1}$_dp(x) result(res)
3232
end function mean_1_${k1}$_dp
3333
#:endfor
3434

35+
3536
#:for i1, k1, t1 in iktr
3637
module function mean_2_all_${k1}$_${k1}$(x) result(res)
3738
${t1}$, intent(in) :: x(:,:)
@@ -62,6 +63,43 @@ module function mean_2_${k1}$_dp(x, dim) result(res)
6263
end function mean_2_${k1}$_dp
6364
#:endfor
6465

66+
67+
#:for i1, k1, t1 in iktr
68+
module function mean_3_all_${k1}$_${k1}$(x) result(res)
69+
${t1}$, intent(in) :: x(:,:,:)
70+
${t1}$ :: res
71+
end function mean_3_all_${k1}$_${k1}$
72+
#:endfor
73+
74+
#:for i1, k1, t1 in ikti
75+
module function mean_3_all_${k1}$_dp(x) result(res)
76+
${t1}$, intent(in) :: x(:,:,:)
77+
real(dp) :: res
78+
end function mean_3_all_${k1}$_dp
79+
#:endfor
80+
81+
#:for i1, k1, t1 in iktr
82+
module function mean_3_${k1}$_${k1}$(x, dim) result(res)
83+
${t1}$, intent(in) :: x(:,:,:)
84+
integer, intent(in) :: dim
85+
integer :: j_
86+
${t1}$ :: res( &
87+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
88+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
89+
end function mean_3_${k1}$_${k1}$
90+
#:endfor
91+
92+
#:for i1, k1, t1 in ikti
93+
module function mean_3_${k1}$_dp(x, dim) result(res)
94+
${t1}$, intent(in) :: x(:,:,:)
95+
integer, intent(in) :: dim
96+
integer :: j_
97+
real(dp) :: res( &
98+
merge(size(x,2),size(x,1),mask = any((/(j_, j_ = dim, 3)/) == 1)), &
99+
merge(size(x,3),size(x,2),mask = any((/(j_, j_ = dim, 3)/) == 2)) )
100+
end function mean_3_${k1}$_dp
101+
#:endfor
102+
65103
end interface
66104

67105
end module

0 commit comments

Comments
 (0)