median(3f) - [M_orderpack:MEDIAN] Calculates median VALUE. If number of elements is even, returns average of the two "medians".
Synopsis
Description
Options
Returns
Examples
Author
Maintainer
License
Function Median (INVALS)
${TYPE} (Kind=${KIND}), Intent (In) :: INVALS(:) ${TYPE} (Kind=${KIND}) :: MEDIANWhere ${TYPE}(kind=${KIND}) may be
o Real(kind=real32) o Real(kind=real64) o Integer(kind=int32)
MEDIAN(3f) calculates the median value of the array INVALS(). It is a modified version of MEDIANVAL(3f) that provides the average between the two middle values in the case where size(INVALS) is even.Internally, this routine uses a pivoting strategy similar to the method of finding the median based on the Quick-sort algorithm, but we skew the pivot choice to try to bring it to one-half the values as fast as possible. It uses two temporary arrays, where it stores the indices of the values smaller than the pivot (ILOWT), and the indices of values larger than the pivot that we might still need later on (IHIGT). It iterates until it can bring the number of values in ILOWT to exactly NORD, and then finds the maximum of this set.
INVALS array to determine the median value of.
MEDIAN median value. If INVALS contains an even number of elements the value is the average of the two "medians".
Sample program:
program demo_median ! calculate median value use M_orderpack, only : median implicit none character(len=*),parameter :: g=(*(g0,1x))Results:write(*,g) real ,median(& [80.0,70.0,20.0,10.0,1000.0] )
write(*,g) integer,median(& [11, 22, 33, 44, 55, 66, 77, 88] )
write(*,g) double ,median(& [11.0d0,22.0d0,33.0d0,66.0d0,77.0d0,88.0d0])
end program demo_median
real 70.00000 integer 49 double 49.50000000000000
Michel Olagnon - Aug. 2000
John Urban, 2022.04.16
CC0-1.0
Nemo Release 3.1 | median (3) | February 23, 2025 |