Coverage Report

Created: 2025-06-13 06:29

/src/proj/src/zpoly1.cpp
Line
Count
Source (jump to first uncovered line)
1
/* evaluate complex polynomial */
2
#include "proj.h"
3
#include "proj_internal.h"
4
/* note: coefficients are always from C_1 to C_n
5
**  i.e. C_0 == (0., 0)
6
**  n should always be >= 1 though no checks are made
7
*/
8
COMPLEX
9
0
pj_zpoly1(COMPLEX z, const COMPLEX *C, int n) {
10
0
    COMPLEX a;
11
0
    double t;
12
13
0
    a = *(C += n);
14
0
    while (n-- > 0) {
15
0
        a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i;
16
0
        a.i = C->i + z.r * a.i + z.i * t;
17
0
    }
18
0
    a.r = z.r * (t = a.r) - z.i * a.i;
19
0
    a.i = z.r * a.i + z.i * t;
20
0
    return a;
21
0
}
22
/* evaluate complex polynomial and derivative */
23
COMPLEX
24
0
pj_zpolyd1(COMPLEX z, const COMPLEX *C, int n, COMPLEX *der) {
25
0
    COMPLEX a, b;
26
0
    double t;
27
0
    int first = 1;
28
29
0
    a = *(C += n);
30
0
    b = a;
31
0
    while (n-- > 0) {
32
0
        if (first) {
33
0
            first = 0;
34
0
        } else {
35
0
            b.r = a.r + z.r * (t = b.r) - z.i * b.i;
36
0
            b.i = a.i + z.r * b.i + z.i * t;
37
0
        }
38
0
        a.r = (--C)->r + z.r * (t = a.r) - z.i * a.i;
39
0
        a.i = C->i + z.r * a.i + z.i * t;
40
0
    }
41
0
    b.r = a.r + z.r * (t = b.r) - z.i * b.i;
42
0
    b.i = a.i + z.r * b.i + z.i * t;
43
0
    a.r = z.r * (t = a.r) - z.i * a.i;
44
0
    a.i = z.r * a.i + z.i * t;
45
0
    *der = b;
46
0
    return a;
47
0
}