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