Coverage Report

Created: 2026-06-09 07:13

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