#polynomial #arithmetic #vector #coefficients #perform #evaluation

polynomials

Tools to perform polynomial arithmetic and evaluation

7 releases

0.2.4 Oct 7, 2020
0.2.3 Jul 30, 2020
0.1.1 Jul 19, 2020

#1792 in Math

Download history 23/week @ 2024-07-20 32/week @ 2024-07-27 30/week @ 2024-08-03 22/week @ 2024-08-10 19/week @ 2024-08-17 28/week @ 2024-08-24 26/week @ 2024-08-31 30/week @ 2024-09-07 33/week @ 2024-09-14 55/week @ 2024-09-21 28/week @ 2024-09-28 41/week @ 2024-10-05 54/week @ 2024-10-12 38/week @ 2024-10-19 39/week @ 2024-10-26 27/week @ 2024-11-02

160 downloads per month
Used in 8 crates (4 directly)

Custom license

17KB
384 lines

Polynomials

A minimal implementation of polynomial arithmetic, that does not rely on the standard library. (i.e. can be built with no_std)

Documentation

Detailed documentation can be found here.

Usage

A Polynomial is a vector of coefficients. To create a new polynomial:

let mut p = Polynomial::new();

You can add coefficients to this polynomial, just like adding elements to a vector:

// 3x^2 + 2x + 1
p.push(1);
p.push(2);
p.push(3);

Or you can instantiate a vector with the poly! macro, similar to a vector:

let p = poly![1, 2, 3];

You can multiply or divide a polynomial by a constant:

let new = p * 2;
assert_eq!(new, poly![2, 4, 6]);
assert_eq!(new / 2, poly![1, 2, 3]);

You can multiply a polynomial by another polynomial:

// (x + 1)(x - 1) = x^2 - 1
let a = poly![1, 1]; // x + 1
let b = poly![1, -1]; // x - 1
assert_eq!(a * b, poly![-1, 0, 1]);

And of course, you can evaluate a polynomial at some value:

let p = poly![1, 1]; // x + 1
assert_eq!(p.eval(7).unwrap(), 8); // 1*7 + 1

Dependencies

~0.4–1MB
~23K SLoC