21 releases
new 0.5.1 | Apr 11, 2025 |
---|---|
0.5.0 | Nov 26, 2022 |
0.4.7 | Jul 18, 2022 |
0.4.3 | Feb 13, 2022 |
0.1.1 | Apr 5, 2020 |
#154 in Math
535 downloads per month
Used in 7 crates
25KB
519 lines
Polynomial Ring
A polynomial implementation.
use num::Rational64;
use polynomial_ring::Polynomial;
let f = Polynomial::new(vec![3, 1, 4, 1, 5].into_iter().map(|x| Rational64::from_integer(x)).collect());
let g = Polynomial::new(vec![2, 7, 1].into_iter().map(|x| Rational64::from_integer(x)).collect());
let mut r = f.clone();
let q = r.division(&g);
assert_eq!(f, q * g + r);
let f = Polynomial::new(vec![3, 1, 4, 1, 5].into_iter().map(|x| rug::Rational::from(x)).collect());
let g = Polynomial::new(vec![2, 7, 1].into_iter().map(|x| rug::Rational::from(x)).collect());
let mut r = f.clone();
let q = r.division(&g);
assert_eq!(f, q * g + r);
The Add
, Sub
, Mul
, Div
, and Rem
traits are implemented for polynomials.
Polynomials also support computing derivative, square free, pseudo division, and resultant.
Licence
AGPL-3.0-or-later
Dependencies
~2MB
~44K SLoC