Coverage Report

Created: 2025-06-13 06:29

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