Skip to content

Commit 5ff0968

Browse files
committed
moment_dev: addition of a function for central moment
1 parent 1e0e460 commit 5ff0968

4 files changed

+381
-0
lines changed

src/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ set(fppFiles
66
stdlib_experimental_optval.fypp
77
stdlib_experimental_stats.fypp
88
stdlib_experimental_stats_mean.fypp
9+
stdlib_experimental_stats_moment.fypp
910
stdlib_experimental_stats_var.fypp
1011
stdlib_experimental_quadrature.fypp
1112
stdlib_experimental_quadrature_trapz.fypp

src/Makefile.manual

+6
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ SRC = f18estop.f90 \
88
stdlib_experimental_quadrature_trapz.f90 \
99
stdlib_experimental_stats.f90 \
1010
stdlib_experimental_stats_mean.f90 \
11+
stdlib_experimental_stats_moment.f90 \
1112
stdlib_experimental_stats_var.f90
1213

1314
LIB = libstdlib.a
@@ -46,6 +47,10 @@ stdlib_experimental_stats_mean.o: \
4647
stdlib_experimental_optval.o \
4748
stdlib_experimental_kinds.o \
4849
stdlib_experimental_stats.o
50+
stdlib_experimental_stats_moment.o: \
51+
stdlib_experimental_optval.o \
52+
stdlib_experimental_kinds.o \
53+
stdlib_experimental_stats.o
4954
stdlib_experimental_stats_var.o: \
5055
stdlib_experimental_optval.o \
5156
stdlib_experimental_kinds.o \
@@ -56,4 +61,5 @@ stdlib_experimental_io.f90: stdlib_experimental_io.fypp
5661
stdlib_experimental_quadrature.f90: stdlib_experimental_quadrature.fypp
5762
stdlib_experimental_stats.f90: stdlib_experimental_stats.fypp
5863
stdlib_experimental_stats_mean.f90: stdlib_experimental_stats_mean.fypp
64+
stdlib_experimental_stats_moment.f90: stdlib_experimental_stats_moment.fypp
5965
stdlib_experimental_stats_var.f90: stdlib_experimental_stats_var.fypp

src/stdlib_experimental_stats.fypp

+101
Original file line numberDiff line numberDiff line change
@@ -201,5 +201,106 @@ module stdlib_experimental_stats
201201

202202
end interface var
203203

204+
interface moment
205+
#:for k1, t1 in RC_KINDS_TYPES
206+
#:for rank in RANKS
207+
#:set RName = rname("moment_all",rank, t1, k1)
208+
module function ${RName}$(x, order, mask) result(res)
209+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
210+
integer, intent(in) :: order
211+
logical, intent(in), optional :: mask
212+
real(${k1}$) :: res
213+
end function ${RName}$
214+
#:endfor
215+
#:endfor
216+
217+
#:for k1, t1 in INT_KINDS_TYPES
218+
#:for rank in RANKS
219+
#:set RName = rname("moment_all",rank, t1, k1, 'dp')
220+
module function ${RName}$(x, order, mask) result(res)
221+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
222+
integer, intent(in) :: order
223+
logical, intent(in), optional :: mask
224+
real(dp) :: res
225+
end function ${RName}$
226+
#:endfor
227+
#:endfor
228+
229+
#:for k1, t1 in RC_KINDS_TYPES
230+
#:for rank in RANKS
231+
#:set RName = rname("moment",rank, t1, k1)
232+
module function ${RName}$(x, order, dim, mask) result(res)
233+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
234+
integer, intent(in) :: order
235+
integer, intent(in) :: dim
236+
logical, intent(in), optional :: mask
237+
real(${k1}$) :: res${reduced_shape('x', rank, 'dim')}$
238+
end function ${RName}$
239+
#:endfor
240+
#:endfor
241+
242+
#:for k1, t1 in INT_KINDS_TYPES
243+
#:for rank in RANKS
244+
#:set RName = rname("moment",rank, t1, k1, 'dp')
245+
module function ${RName}$(x, order, dim, mask) result(res)
246+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
247+
integer, intent(in) :: order
248+
integer, intent(in) :: dim
249+
logical, intent(in), optional :: mask
250+
real(dp) :: res${reduced_shape('x', rank, 'dim')}$
251+
end function ${RName}$
252+
#:endfor
253+
#:endfor
254+
255+
#:for k1, t1 in RC_KINDS_TYPES
256+
#:for rank in RANKS
257+
#:set RName = rname("moment_mask_all",rank, t1, k1)
258+
module function ${RName}$(x, order, mask) result(res)
259+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
260+
integer, intent(in) :: order
261+
logical, intent(in) :: mask${ranksuffix(rank)}$
262+
real(${k1}$) :: res
263+
end function ${RName}$
264+
#:endfor
265+
#:endfor
266+
267+
#:for k1, t1 in INT_KINDS_TYPES
268+
#:for rank in RANKS
269+
#:set RName = rname("moment_mask_all",rank, t1, k1, 'dp')
270+
module function ${RName}$(x, order, mask) result(res)
271+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
272+
integer, intent(in) :: order
273+
logical, intent(in) :: mask${ranksuffix(rank)}$
274+
real(dp) :: res
275+
end function ${RName}$
276+
#:endfor
277+
#:endfor
278+
279+
#:for k1, t1 in RC_KINDS_TYPES
280+
#:for rank in RANKS
281+
#:set RName = rname("moment_mask",rank, t1, k1)
282+
module function ${RName}$(x, order, dim, mask) result(res)
283+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
284+
integer, intent(in) :: order
285+
integer, intent(in) :: dim
286+
logical, intent(in) :: mask${ranksuffix(rank)}$
287+
real(${k1}$) :: res${reduced_shape('x', rank, 'dim')}$
288+
end function ${RName}$
289+
#:endfor
290+
#:endfor
291+
292+
#:for k1, t1 in INT_KINDS_TYPES
293+
#:for rank in RANKS
294+
#:set RName = rname("moment_mask",rank, t1, k1, 'dp')
295+
module function ${RName}$(x, order, dim, mask) result(res)
296+
${t1}$, intent(in) :: x${ranksuffix(rank)}$
297+
integer, intent(in) :: order
298+
integer, intent(in) :: dim
299+
logical, intent(in) :: mask${ranksuffix(rank)}$
300+
real(dp) :: res${reduced_shape('x', rank, 'dim')}$
301+
end function ${RName}$
302+
#:endfor
303+
#:endfor
304+
end interface moment
204305

205306
end module stdlib_experimental_stats

0 commit comments

Comments
 (0)