1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
2 | /* |
3 | * Copyright (C) 2020 BAIKAL ELECTRONICS, JSC |
4 | */ |
5 | |
6 | #ifndef _POLYNOMIAL_H |
7 | #define _POLYNOMIAL_H |
8 | |
9 | /* |
10 | * struct polynomial_term - one term descriptor of a polynomial |
11 | * @deg: degree of the term. |
12 | * @coef: multiplication factor of the term. |
13 | * @divider: distributed divider per each degree. |
14 | * @divider_leftover: divider leftover, which couldn't be redistributed. |
15 | */ |
16 | struct polynomial_term { |
17 | unsigned int deg; |
18 | long coef; |
19 | long divider; |
20 | long divider_leftover; |
21 | }; |
22 | |
23 | /* |
24 | * struct polynomial - a polynomial descriptor |
25 | * @total_divider: total data divider. |
26 | * @terms: polynomial terms, last term must have degree of 0 |
27 | */ |
28 | struct polynomial { |
29 | long total_divider; |
30 | struct polynomial_term terms[]; |
31 | }; |
32 | |
33 | long polynomial_calc(const struct polynomial *poly, long data); |
34 | |
35 | #endif |
36 | |