Coverage Report

Created: 2024-02-25 06:14

/src/PROJ/src/aasincos.cpp
Line
Count
Source (jump to first uncovered line)
1
/* arc sin, cosine, tan2 and sqrt that will NOT fail */
2
3
#include <math.h>
4
5
#include "proj.h"
6
#include "proj_internal.h"
7
8
946
#define ONE_TOL 1.00000000000001
9
152
#define ATOL 1e-50
10
11
1.66k
double aasin(PJ_CONTEXT *ctx, double v) {
12
1.66k
    double av;
13
14
1.66k
    if ((av = fabs(v)) >= 1.) {
15
44
        if (av > ONE_TOL)
16
4
            proj_context_errno_set(
17
4
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
18
44
        return (v < 0. ? -M_HALFPI : M_HALFPI);
19
44
    }
20
1.61k
    return asin(v);
21
1.66k
}
22
23
2.02k
double aacos(PJ_CONTEXT *ctx, double v) {
24
2.02k
    double av;
25
26
2.02k
    if ((av = fabs(v)) >= 1.) {
27
902
        if (av > ONE_TOL)
28
8
            proj_context_errno_set(
29
8
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
30
902
        return (v < 0. ? M_PI : 0.);
31
902
    }
32
1.11k
    return acos(v);
33
2.02k
}
34
0
double asqrt(double v) { return ((v <= 0) ? 0. : sqrt(v)); }
35
76
double aatan2(double n, double d) {
36
76
    return ((fabs(n) < ATOL && fabs(d) < ATOL) ? 0. : atan2(n, d));
37
76
}