pub trait PolynomialNd<X, Y, const N: usize>: Sized {
    // Required method
    fn evaluate_as_polynomial_nd(self, x: [X; N]) -> Y;
}

Required Methods§

source

fn evaluate_as_polynomial_nd(self, x: [X; N]) -> Y

Evaluates a multivariable polynomial

Example
#![feature(generic_const_exprs)]
 
use polynomial_ops::*;
 
let p: [[u64; 3]; 3] = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];
for x in 0..256
{
    for y in 0..256
    {
        assert_eq!(
            p.evaluate_as_polynomial_nd([x, y]),
            1 + y*2 + y*y*3 + x*(4 + y*5 + y*y*6) + x*x*(7 + y*8 + y*y*9)
        );
    }
}

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<C, X, A, const N: usize> PolynomialNd<X, <X as Mul<C>>::Output, N> for A
where A: ArrayNd<N, ItemNd = C> + ArrayNdOps<N, C, { A::FLAT_LENGTH }>, C: Destruct + Into<<X as Mul<C>>::Output>, X: Mul<C> + MulAssign + Mul<Output = X> + Copy, <X as Mul<C>>::Output: Default + Add<Output = <X as Mul<C>>::Output> + Destruct,