Coverage Report

Created: 2026-01-09 07:03

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
22
#define ONE_TOL 1.00000000000001
9
990k
#define ATOL 1e-50
10
11
557k
double aasin(PJ_CONTEXT *ctx, double v) {
12
557k
    double av;
13
14
557k
    if ((av = fabs(v)) >= 1.) {
15
6
        if (av > ONE_TOL)
16
3
            proj_context_errno_set(
17
3
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
18
6
        return (v < 0. ? -M_HALFPI : M_HALFPI);
19
6
    }
20
557k
    return asin(v);
21
557k
}
22
23
23.4k
double aacos(PJ_CONTEXT *ctx, double v) {
24
23.4k
    double av;
25
26
23.4k
    if ((av = fabs(v)) >= 1.) {
27
16
        if (av > ONE_TOL)
28
3
            proj_context_errno_set(
29
3
                ctx, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
30
16
        return (v < 0. ? M_PI : 0.);
31
16
    }
32
23.4k
    return acos(v);
33
23.4k
}
34
28.3k
double asqrt(double v) { return ((v <= 0) ? 0. : sqrt(v)); }
35
495k
double aatan2(double n, double d) {
36
495k
    return ((fabs(n) < ATOL && fabs(d) < ATOL) ? 0. : atan2(n, d));
37
495k
}