c_sum.c 711 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include <grass/gis.h>
  2. void c_sum(DCELL * result, DCELL * values, int n)
  3. {
  4. DCELL sum;
  5. int count;
  6. int i;
  7. sum = 0.0;
  8. count = 0;
  9. for (i = 0; i < n; i++) {
  10. if (G_is_d_null_value(&values[i]))
  11. continue;
  12. sum += values[i];
  13. count++;
  14. }
  15. if (count == 0)
  16. G_set_d_null_value(result, 1);
  17. else
  18. *result = sum;
  19. }
  20. void w_sum(DCELL * result, DCELL(*values)[2], int n)
  21. {
  22. DCELL sum;
  23. DCELL count;
  24. int i;
  25. sum = 0.0;
  26. count = 0.0;
  27. for (i = 0; i < n; i++) {
  28. if (G_is_d_null_value(&values[i][0]))
  29. continue;
  30. sum += values[i][0] * values[i][1];
  31. count += values[i][1];
  32. }
  33. if (count == 0)
  34. G_set_d_null_value(result, 1);
  35. else
  36. *result = sum;
  37. }