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