Function algebraic_equation_over_finite_prime_field::find_all_roots_over_mod_p[][src]

pub fn find_all_roots_over_mod_p<T>(poly: PolynomialOverP<T>) -> Vec<T> where
    usize: TryFrom<T>,
    <usize as TryFrom<T>>::Error: Debug,
    T: Sized + Clone + Eq + Ord + Zero + One + for<'x> AddAssign<&'x T> + for<'x> SubAssign<&'x T> + for<'x> DivAssign<&'x T> + for<'x> RemAssign<&'x T> + Neg<Output = T> + From<u8> + SampleUniform + ShrAssign<u8> + RingNormalize,
    for<'x> &'x T: Add<Output = T> + Neg<Output = T> + Sub<Output = T> + Mul<Output = T> + Div<Output = T> + Rem<Output = T> + BitAnd<Output = T>, 
Expand description

Find all roots of polynomial in modulo prime.

This function do not brute-force search or factorize polynomial.

use algebraic_equation_over_finite_prime_field::{find_all_roots_over_mod_p, PolynomialOverP};
// (x^2+2)(x-1)(x-3)≡x^4+x^3+2x+1 (mod 5)
let p = PolynomialOverP::<i32>::new(vec![1, 2, 0, 1, 1], 5);
let mut v = find_all_roots_over_mod_p::<i32>(p);
v.sort();
assert_eq!(vec![1, 3], v);