polynomial.h 814 B

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