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