4 #include <grass/raster.h>
6 void c_skew(DCELL * result, DCELL * values,
int n,
const void *closure)
8 DCELL sum, ave, sumsq, sumcb, sdev;
15 for (i = 0; i < n; i++) {
16 if (Rast_is_d_null_value(&values[i]))
24 Rast_set_d_null_value(result, 1);
32 for (i = 0; i < n; i++) {
35 if (Rast_is_d_null_value(&values[i]))
43 sdev = sqrt(sumsq / count);
45 *result = sumcb / (count * sdev * sdev * sdev);
48 void w_skew(DCELL * result, DCELL(*values)[2],
int n,
const void *closure)
50 DCELL sum, ave, sumsq, sumcb, sdev;
57 for (i = 0; i < n; i++) {
58 if (Rast_is_d_null_value(&values[i][0]))
61 sum += values[i][0] * values[i][1];
62 count += values[i][1];
66 Rast_set_d_null_value(result, 1);
74 for (i = 0; i < n; i++) {
77 if (Rast_is_d_null_value(&values[i][0]))
80 d = values[i][0] - ave;
81 sumsq += d * d * values[i][1];
82 sumcb += d * d * d * values[i][1];
85 sdev = sqrt(sumsq / count);
87 *result = sumcb / (count * sdev * sdev * sdev);
void w_skew(DCELL *result, DCELL(*values)[2], int n, const void *closure)
void c_skew(DCELL *result, DCELL *values, int n, const void *closure)