GRASS Programmer's Manual  6.4.2(2012)
c_sum.c
Go to the documentation of this file.
00001 #include <grass/gis.h>
00002 
00003 void c_sum(DCELL * result, DCELL * values, int n, const void *closure)
00004 {
00005     DCELL sum;
00006     int count;
00007     int i;
00008 
00009     sum = 0.0;
00010     count = 0;
00011 
00012     for (i = 0; i < n; i++) {
00013         if (G_is_d_null_value(&values[i]))
00014             continue;
00015 
00016         sum += values[i];
00017         count++;
00018     }
00019 
00020     if (count == 0)
00021         G_set_d_null_value(result, 1);
00022     else
00023         *result = sum;
00024 }
00025 
00026 void w_sum(DCELL * result, DCELL(*values)[2], int n, const void *closure)
00027 {
00028     DCELL sum;
00029     DCELL count;
00030     int i;
00031 
00032     sum = 0.0;
00033     count = 0.0;
00034 
00035     for (i = 0; i < n; i++) {
00036         if (G_is_d_null_value(&values[i][0]))
00037             continue;
00038 
00039         sum += values[i][0] * values[i][1];
00040         count += values[i][1];
00041     }
00042 
00043     if (count == 0)
00044         G_set_d_null_value(result, 1);
00045     else
00046         *result = sum;
00047 }
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines