|
2 | 2 | #:set RANKS = range(1, MAXRANK + 1)
|
3 | 3 | #:set REDRANKS = range(2, MAXRANK + 1)
|
4 | 4 | #:set RC_KINDS_TYPES = REAL_KINDS_TYPES + CMPLX_KINDS_TYPES
|
| 5 | +#:set IR_KINDS_TYPES_OUTPUT = list(zip(REAL_KINDS, REAL_TYPES, REAL_KINDS)) + list(zip(INT_KINDS,INT_TYPES, ['dp']*len(INT_KINDS))) |
5 | 6 | module stdlib_stats
|
6 | 7 | !! Provides support for various statistical methods. This includes currently
|
7 | 8 | !! descriptive statistics
|
@@ -309,102 +310,51 @@ module stdlib_stats
|
309 | 310 | !!
|
310 | 311 | !! Median of array elements
|
311 | 312 | !! ([Specification](../page/specs/stdlib_stats.html#median))
|
312 |
| - #:for k1, t1 in REAL_KINDS_TYPES |
313 |
| - #:for rank in RANKS |
314 |
| - #:set RName = rname("median_all",rank, t1, k1) |
315 |
| - module function ${RName}$ (x, mask) result(res) |
316 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
317 |
| - logical, intent(in), optional :: mask |
318 |
| - ${t1}$ :: res |
319 |
| - end function ${RName}$ |
320 |
| - #:endfor |
321 |
| - #:endfor |
322 |
| - |
323 |
| - #:for k1, t1 in INT_KINDS_TYPES |
324 |
| - #:for rank in RANKS |
325 |
| - #:set RName = rname("median_all",rank, t1, k1,'dp') |
326 |
| - module function ${RName}$ (x, mask) result(res) |
327 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
328 |
| - logical, intent(in), optional :: mask |
329 |
| - real(dp) :: res |
330 |
| - end function ${RName}$ |
331 |
| - #:endfor |
332 |
| - #:endfor |
333 |
| - |
334 |
| - #:for k1, t1 in REAL_KINDS_TYPES |
335 |
| - #:for rank in RANKS |
336 |
| - #:set RName = rname("median",rank, t1, k1) |
337 |
| - module function ${RName}$(x, dim, mask) result(res) |
338 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
339 |
| - integer, intent(in) :: dim |
340 |
| - logical, intent(in), optional :: mask |
341 |
| - ${t1}$ :: res${reduced_shape('x', rank, 'dim')}$ |
342 |
| - end function ${RName}$ |
343 |
| - #:endfor |
344 |
| - #:endfor |
345 |
| - |
346 |
| - #:for k1, t1 in INT_KINDS_TYPES |
347 |
| - #:for rank in RANKS |
348 |
| - #:set RName = rname("median",rank, t1, k1,'dp') |
349 |
| - module function ${RName}$(x, dim, mask) result(res) |
350 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
351 |
| - integer, intent(in) :: dim |
352 |
| - logical, intent(in), optional :: mask |
353 |
| - real(dp) :: res${reduced_shape('x', rank, 'dim')}$ |
354 |
| - end function ${RName}$ |
355 |
| - #:endfor |
356 |
| - #:endfor |
357 |
| - |
358 |
| - #:for k1, t1 in REAL_KINDS_TYPES |
359 |
| - #:for rank in RANKS |
360 |
| - #:set RName = rname('median_mask_all',rank, t1, k1) |
361 |
| - module function ${RName}$(x, mask) result(res) |
362 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
363 |
| - logical, intent(in) :: mask${ranksuffix(rank)}$ |
364 |
| - ${t1}$ :: res |
365 |
| - end function ${RName}$ |
| 313 | + #:for k1, t1, o1 in IR_KINDS_TYPES_OUTPUT |
| 314 | + #:for rank in RANKS |
| 315 | + #:set RName = rname("median_all",rank, t1, k1, o1) |
| 316 | + module function ${RName}$ (x, mask) result(res) |
| 317 | + ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
| 318 | + logical, intent(in), optional :: mask |
| 319 | + real(${o1}$) :: res |
| 320 | + end function ${RName}$ |
| 321 | + #:endfor |
366 | 322 | #:endfor
|
367 |
| - #:endfor |
368 |
| - |
369 |
| - #:for k1, t1 in INT_KINDS_TYPES |
370 |
| - #:for rank in RANKS |
371 |
| - #:set RName = rname('median_mask_all',rank, t1, k1,'dp') |
372 |
| - module function ${RName}$(x, mask) result(res) |
373 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
374 |
| - logical, intent(in) :: mask${ranksuffix(rank)}$ |
375 |
| - real(dp) :: res |
376 |
| - end function ${RName}$ |
| 323 | + |
| 324 | + #:for k1, t1, o1 in IR_KINDS_TYPES_OUTPUT |
| 325 | + #:for rank in RANKS |
| 326 | + #:set RName = rname("median",rank, t1, k1, o1) |
| 327 | + module function ${RName}$(x, dim, mask) result(res) |
| 328 | + ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
| 329 | + integer, intent(in) :: dim |
| 330 | + logical, intent(in), optional :: mask |
| 331 | + real(${o1}$) :: res${reduced_shape('x', rank, 'dim')}$ |
| 332 | + end function ${RName}$ |
| 333 | + #:endfor |
377 | 334 | #:endfor
|
378 |
| - #:endfor |
379 |
| - |
380 |
| - |
381 |
| - |
382 |
| - #:for k1, t1 in REAL_KINDS_TYPES |
383 |
| - #:for rank in RANKS |
384 |
| - #:set RName = rname('median_mask',rank, t1, k1) |
385 |
| - module function ${RName}$(x, dim, mask) result(res) |
386 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
387 |
| - integer, intent(in) :: dim |
388 |
| - logical, intent(in) :: mask${ranksuffix(rank)}$ |
389 |
| - ${t1}$ :: res${reduced_shape('x', rank, 'dim')}$ |
390 |
| - end function ${RName}$ |
| 335 | + |
| 336 | + #:for k1, t1, o1 in IR_KINDS_TYPES_OUTPUT |
| 337 | + #:for rank in RANKS |
| 338 | + #:set RName = rname('median_mask_all',rank, t1, k1, o1) |
| 339 | + module function ${RName}$(x, mask) result(res) |
| 340 | + ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
| 341 | + logical, intent(in) :: mask${ranksuffix(rank)}$ |
| 342 | + real(${o1}$) :: res |
| 343 | + end function ${RName}$ |
| 344 | + #:endfor |
391 | 345 | #:endfor
|
392 |
| - #:endfor |
393 |
| - |
394 |
| - |
395 |
| - #:for k1, t1 in INT_KINDS_TYPES |
396 |
| - #:for rank in RANKS |
397 |
| - #:set RName = rname('median_mask',rank, t1, k1, 'dp') |
398 |
| - module function ${RName}$(x, dim, mask) result(res) |
399 |
| - ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
400 |
| - integer, intent(in) :: dim |
401 |
| - logical, intent(in) :: mask${ranksuffix(rank)}$ |
402 |
| - real(dp) :: res${reduced_shape('x', rank, 'dim')}$ |
403 |
| - end function ${RName}$ |
| 346 | + |
| 347 | + #:for k1, t1, o1 in IR_KINDS_TYPES_OUTPUT |
| 348 | + #:for rank in RANKS |
| 349 | + #:set RName = rname('median_mask',rank, t1, k1, o1) |
| 350 | + module function ${RName}$(x, dim, mask) result(res) |
| 351 | + ${t1}$, intent(in) :: x${ranksuffix(rank)}$ |
| 352 | + integer, intent(in) :: dim |
| 353 | + logical, intent(in) :: mask${ranksuffix(rank)}$ |
| 354 | + real(${o1}$) :: res${reduced_shape('x', rank, 'dim')}$ |
| 355 | + end function ${RName}$ |
| 356 | + #:endfor |
404 | 357 | #:endfor
|
405 |
| - #:endfor |
406 |
| - |
407 |
| - |
408 | 358 |
|
409 | 359 | end interface
|
410 | 360 |
|
|
0 commit comments