Coverage Report

Created: 2026-01-17 06:39

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/PROJ/src/aasincos.cpp
Line
Count
Source
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
12
#define ONE_TOL 1.00000000000001
9
552k
#define ATOL 1e-50
10
11
290k
double aasin(PJ_CONTEXT *ctx, double v) {
12
290k
    double av;
13
14
290k
    if ((av = fabs(v)) >= 1.) {
15
4
        if (av > ONE_TOL)
16
2
            proj_context_errno_set(
17
2
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
18
4
        return (v < 0. ? -M_HALFPI : M_HALFPI);
19
4
    }
20
290k
    return asin(v);
21
290k
}
22
23
4.08k
double aacos(PJ_CONTEXT *ctx, double v) {
24
4.08k
    double av;
25
26
4.08k
    if ((av = fabs(v)) >= 1.) {
27
8
        if (av > ONE_TOL)
28
2
            proj_context_errno_set(
29
2
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
30
8
        return (v < 0. ? M_PI : 0.);
31
8
    }
32
4.07k
    return acos(v);
33
4.08k
}
34
14.6k
double asqrt(double v) { return ((v <= 0) ? 0. : sqrt(v)); }
35
276k
double aatan2(double n, double d) {
36
276k
    return ((fabs(n) < ATOL && fabs(d) < ATOL) ? 0. : atan2(n, d));
37
276k
}