(phixonline)-->
with javascript_semantics
function median(sequence tbl, integer lo, hi)
integer l = hi-lo+1
integer m = lo+floor(l/2)
if remainder(l,2)=1 then
return tbl[m]
end if
return (tbl[m-1]+tbl[m])/2
end function
function fivenum(sequence tbl)
tbl = sort(deep_copy(tbl))
integer l = length(tbl),
m = floor(l/2)+remainder(l,2)
atom r1 = tbl[1],
r2 = median(tbl,1,m),
r3 = median(tbl,1,l),
r4 = median(tbl,m+1,l),
r5 = tbl[l]
return {r1, r2, r3, r4, r5}
end function
constant x1 = {15, 6, 42, 41, 7, 36, 49, 40, 39, 47, 43},
x2 = {36, 40, 7, 39, 41, 15},
x3 = {0.14082834, 0.09748790, 1.73131507, 0.87636009, -1.95059594,
0.73438555, -0.03035726, 1.46675970, -0.74621349, -0.72588772,
0.63905160, 0.61501527, -0.98983780, -1.00447874, -0.62759469,
0.66206163, 1.04312009, -0.10305385, 0.75775634, 0.32566578}
pp(fivenum(x1))
pp(fivenum(x2))
pp(fivenum(x3))