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);
33 for (i = 0; i < n; i++) {
36 if (Rast_is_d_null_value(&values[i]))
44 sdev = sqrt(sumsq /
count);
46 *result = sumcb / (
count * sdev * sdev * sdev);
49 void w_skew(DCELL * result, DCELL(*values)[2],
int n,
const void *closure)
51 DCELL sum, ave, sumsq, sumcb, sdev;
58 for (i = 0; i < n; i++) {
59 if (Rast_is_d_null_value(&values[i][0]))
62 sum += values[i][0] * values[i][1];
63 count += values[i][1];
67 Rast_set_d_null_value(result, 1);
76 for (i = 0; i < n; i++) {
79 if (Rast_is_d_null_value(&values[i][0]))
82 d = values[i][0] - ave;
83 sumsq += d * d * values[i][1];
84 sumcb += d * d * d * values[i][1];
87 sdev = sqrt(sumsq /
count);
89 *result = sumcb / (
count * sdev * sdev * sdev);