GRASS GIS 8 Programmer's Manual 8.2.1(2023)-exported
xtan.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/**********************************************************************
10tan(x)
11
12 if floating point exception occurs during the evaluation of tan(x)
13 the result is NULL
14
15 note: x is in degrees.
16**********************************************************************/
17
18#define DEGREES_TO_RADIANS (M_PI / 180.0)
19
20int f_tan(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] = tan(arg1[i] * DEGREES_TO_RADIANS);
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_tan(int argc, const int *argt, void **args)
Definition: xtan.c:20
#define DEGREES_TO_RADIANS
Definition: xtan.c:18