GRASS GIS 8 Programmer's Manual 8.2.1RC1(2022)-exported
xacos.c
Go to the documentation of this file.
1
2#include <stdlib.h>
3#include <math.h>
4
5#include <grass/gis.h>
6#include <grass/raster.h>
7#include <grass/calc.h>
8
9/**********************************************************************
10acos(x) [0 and PI]
11
12 if floating point exception occurs during the evaluation of acos(x)
13 the result is NULL
14
15 note: result is in degrees
16**********************************************************************/
17
18#define RADIANS_TO_DEGREES (180.0 / M_PI)
19
20int f_acos(int argc, const int *argt, void **args)
21{
22 DCELL *res = args[0];
23 DCELL *arg1 = args[1];
24 int i;
25
26 if (argc < 1)
27 return E_ARG_LO;
28 if (argc > 1)
29 return E_ARG_HI;
30
31 if (argt[0] != DCELL_TYPE)
32 return E_RES_TYPE;
33
34 if (argt[1] != DCELL_TYPE)
35 return E_ARG_TYPE;
36
37 for (i = 0; i < columns; i++)
38 if (IS_NULL_D(&arg1[i]))
39 SET_NULL_D(&res[i]);
40 else {
42 res[i] = RADIANS_TO_DEGREES * acos(arg1[i]);
44 SET_NULL_D(&res[i]);
45 }
46
47 return 0;
48}
volatile int floating_point_exception
Definition: calc.c:9
int columns
Definition: calc.c:12
int f_acos(int argc, const int *argt, void **args)
Definition: xacos.c:20
#define RADIANS_TO_DEGREES
Definition: xacos.c:18