6void c_skew(DCELL *result, DCELL *values,
int n,
const void *closure UNUSED)
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);
49void w_skew(DCELL *result, DCELL (*values)[2],
int n,
50 const void *closure UNUSED)
52 DCELL sum, ave, sumsq, sumcb, sdev;
59 for (i = 0; i < n; i++) {
60 if (Rast_is_d_null_value(&values[i][0]))
63 sum += values[i][0] * values[i][1];
64 count += values[i][1];
68 Rast_set_d_null_value(result, 1);
77 for (i = 0; i < n; i++) {
80 if (Rast_is_d_null_value(&values[i][0]))
83 d = values[i][0] - ave;
84 sumsq += d * d * values[i][1];
85 sumcb += d * d * d * values[i][1];
88 sdev = sqrt(sumsq /
count);
90 *result = sumcb / (
count * sdev * sdev * sdev);