GRASS GIS 8 Programmer's Manual  8.5.0dev(2025)-a277d8547c
basic.c
Go to the documentation of this file.
1 #include <math.h>
2 
3 #include <grass/arraystats.h>
4 #include <grass/gis.h>
5 
6 /*provides basic univar stats */
7 void AS_basic_stats(const double data[], int count, struct GASTATS *stats)
8 {
9  int i = 1;
10  double sum = 0, sumsq = 0, sumabs = 0;
11  double dev = 0, dev2 = 0;
12 
13  stats->count = count;
14  stats->min = data[0];
15  stats->max = data[count - 1];
16 
17  for (i = 0; i < count; i++) {
18  sum += data[i];
19  sumabs += fabs(data[i]);
20  sumsq += data[i] * data[i];
21  }
22  stats->sum = sum;
23  stats->sumabs = sumabs;
24  stats->sumsq = sumsq;
25 
26  stats->mean = stats->sum / stats->count;
27  stats->meanabs = stats->sumabs / stats->count;
28  for (i = 0; i < count; i++) {
29  dev2 = dev2 + (data[i] - stats->mean) * (data[i] - stats->mean);
30  dev = dev + (data[i] - stats->mean);
31  }
32 
33  stats->var = (dev2 - (dev * dev / stats->count)) / stats->count;
34  stats->stdev = sqrt(stats->var);
35 
36  return;
37 }
38 
39 void AS_eqdrt(double vectx[], double vecty[], int i1, int i2, double *a,
40  double *b, double *c)
41 {
42  double x1 = vectx[i1];
43  double y1 = vecty[i1];
44  double x2 = vectx[i2];
45  double y2 = vecty[i2];
46 
47  if (i1 == 0) {
48  x1 = 0.0;
49  y1 = 0.0;
50  }
51  else {
52  x1 = vectx[i1];
53  y1 = vecty[i1];
54  }
55 
56  *a = 0.0;
57  *b = 0.0;
58  *c = 0.0;
59 
60  double bn = y1 - y2;
61  double bd = x1 - x2;
62 
63  if (fabs(bd) < GRASS_EPSILON) {
64  if (fabs(bn) < GRASS_EPSILON) {
65  G_debug(3, "Points are equal\n");
66  }
67  else {
68  *c = x1;
69  }
70  }
71  else {
72  *b = bn / bd;
73  *a = y1 - *b * x1;
74  }
75 }
void AS_eqdrt(double vectx[], double vecty[], int i1, int i2, double *a, double *b, double *c)
Definition: basic.c:39
void AS_basic_stats(const double data[], int count, struct GASTATS *stats)
Definition: basic.c:7
int G_debug(int, const char *,...) __attribute__((format(printf
#define GRASS_EPSILON
Definition: gis.h:172
GRASS_INTERPFL_EXPORT int count
double b
Definition: r_raster.c:39
double sum
Definition: arraystats.h:15
double mean
Definition: arraystats.h:18
double sumabs
Definition: arraystats.h:17
double max
Definition: arraystats.h:14
double meanabs
Definition: arraystats.h:19
double stdev
Definition: arraystats.h:21
double var
Definition: arraystats.h:20
double min
Definition: arraystats.h:13
double count
Definition: arraystats.h:12
double sumsq
Definition: arraystats.h:16