45int f_median(
int argc,
const int *argt,
void **args)
49 int size = argc * Rast_cell_size(argt[0]);
55 for (i = 1; i <= argc; i++)
56 if (argt[i] != argt[0])
61 array = G_realloc(array, size);
67 CELL **argv = (CELL **)&args[1];
69 CELL *a1 = &a[(argc - 1) / 2];
70 CELL *a2 = &a[argc / 2];
75 for (j = 0; j < argc && !nv; j++) {
76 if (IS_NULL_C(&argv[j][i]))
85 qsort(a, argc,
sizeof(CELL), icmp);
86 res[i] = (*a1 + *a2) / 2;
94 FCELL **argv = (FCELL **)&args[1];
96 FCELL *a1 = &a[(argc - 1) / 2];
97 FCELL *a2 = &a[argc / 2];
102 for (j = 0; j < argc && !nv; j++) {
103 if (IS_NULL_F(&argv[j][i]))
112 qsort(a, argc,
sizeof(FCELL), fcmp);
113 res[i] = (*a1 + *a2) / 2;
120 DCELL *res = args[0];
121 DCELL **argv = (DCELL **)&args[1];
123 DCELL *a1 = &a[(argc - 1) / 2];
124 DCELL *a2 = &a[argc / 2];
126 for (i = 0; i <
columns; i++) {
129 for (j = 0; j < argc && !nv; j++) {
130 if (IS_NULL_D(&argv[j][i]))
139 qsort(a, argc,
sizeof(DCELL), dcmp);
140 res[i] = (*a1 + *a2) / 2;