Skip to content
/ poly-rs Public

Low-level functions for evaluating and manipulating polynomials

Notifications You must be signed in to change notification settings

nutils/poly-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Low-level functions for evaluating and manipulating polynomials.

Examples

The vector of coefficients for the polynomial f(x, y) = 3 x y + x^2 is [0, 3, 0, 1, 0, 0].

With eval() we can evaluate this polynomial:

use nutils_poly;

let coeffs = [0, 3, 0, 1, 0, 0];
assert_eq!(nutils_poly::eval(&coeffs, &[1, 0], 2), Ok( 1)); // f(1, 0) =  1
assert_eq!(nutils_poly::eval(&coeffs, &[1, 1], 2), Ok( 4)); // f(1, 1) =  4
assert_eq!(nutils_poly::eval(&coeffs, &[2, 3], 2), Ok(22)); // f(2, 3) = 22

PartialDerivPlan::apply() computes the coefficients for the partial derivative of a polynomial to one of the variables. The partial derivative of f to x, the first variable, is ∂_x f(x, y) = 3 y + 2 x (coefficients: [3, 2, 0]):

use nutils_poly::PartialDerivPlan;

let coeffs = [0, 3, 0, 1, 0, 0];
let pd = PartialDerivPlan::new(
    2, // number of variables
    2, // degree
    0, // variable to compute the partial derivative to
).unwrap();
assert_eq!(Vec::from_iter(pd.apply(coeffs)?), vec![3, 2, 0]);
# Ok::<_, nutils_poly::Error>(())

Further reading

See the crate documentation for a detailed description.

This crate is part of the Nutils project.

About

Low-level functions for evaluating and manipulating polynomials

Resources

Stars

Watchers

Forks

Packages

No packages published